【问题标题】:Extract arbitrary data values from a std::string C++从 std::string C++ 中提取任意数据值
【发布时间】:2012-10-12 00:46:00
【问题描述】:

我有这样的字符串

10z45
9999i4a

基本上int-char-int-optionalchar

我想做这个函数原型

void process(std::string input, int &first, char &c, int &last, bool &optional)

唯一的问题是我不确定迭代字符串以提取这些值的最佳方法。宁愿不用regex库,好像也能简单点?

【问题讨论】:

  • 从美学角度来看,我倾向于认为,如果一个函数具有“返回值”,那么它们确实应该是函数的返回值,而不是引用的参数。为什么不创建一个结构/类来表示这种解码,并返回该类型的值?
  • 我同意。结构更适合这里。

标签: c++ string alphanumeric


【解决方案1】:

使用字符串流:

#include <sstream>
...
std::istringstream iss(input);
iss >> first >> c >> last >> optional;

如果没有最终字符,optional 的值将不会被触动,所以我建议事先将其设置为 0。

【讨论】:

    【解决方案2】:

    使用std::istringstream,读取int、char、int,然后尝试下一个char:

    std::istringstream is(input);
    is >> first >> c >> last;
    char c2;
    optional = (is >> c2);
    

    我不确定这是 100% 你想要的 - 但我会这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2012-05-02
      • 1970-01-01
      • 2011-12-14
      • 2015-09-24
      • 1970-01-01
      相关资源
      最近更新 更多