c++ - 从字符串中解析数字

标签 c++ c stl

假设我有这种格式的行

“word word 12 YR”或“word word 10 MO”

我想将其转换为

char * 分别包含“12Y”或“10M”。

格式为两个单词,后跟数字,后跟表示年份或月份的单词。单词以空格/制表符分隔。目前,我正在使用 strtok 函数

谢谢

最佳答案

实现此目的的一种方法是(不进行错误检查,使用 boost):

  string s = "word word 10 MR";
  string res;
  tokenizer<> tok(s);
  tokenizer<>::iterator iter = tok.begin();
  while(iter != tok.end())
  {
      try
      {
        int n = lexical_cast<int>(*iter);
      }
      catch(bad_lexical_cast& e)
      {
          ++iter;
          continue;
      }

      break;
  }

  res = *iter;
  ++iter;
  res = res + (*iter)[0];

非升压解决方案:

  using namespace std;
  string s = "word word 10 MR";
  string res;

  stringstream ss(s);
  istream_iterator<string> iter(ss);
  istream_iterator<string> end;

  while(iter != end)
  {
      istringstream iss(*iter);
      int n;
      iss>>n;

      if( ! iss.fail())
      {
          break;
      }
      ++iter;
  }

  res = *iter;
  ++iter;
  res = res + (*iter)[0];

关于c++ - 从字符串中解析数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856637/

相关文章:

c++ - 在 C++ 中漂亮地打印一个表

c++ - NSMutableData 到 NSString - 如何知道用于 HTTP 响应的编码

c - 传递不带类型的函数参数,然后声明指向同名变量的指针

c++ - 模板中依赖类型的问题

c++ - 无法通过 CMake 链接 Boost 1.63.0

c++ - 仅为 C++ header 设置 vim 文件类型脚本

c++ - 函数参数列表中的三个点是什么意思?

c - 为什么不能返回((a++)%4)

C++ STL unordered_map 实现,引用有效性

c++ - 使用 vector (STL)时的未定义行为,请解释以下代码输出背后的原因