迭代std :: string并拉出字符和整数

时间:2014-05-08 17:30:39

标签: c++ string parsing std

我希望迭代这样的字符串:

string mystr = "13n4w14n3w2s";

我想要提取的是一个地图,如果可能的话,从该字符串开始,但保持其找到的顺序。

13 n
4 w
14 n
3 w
2 s

我将在另一个时间点迭代。 现在,我已经看到了从像#34; 13a"

这样的简单字符串中提取值的示例
string str = "13a";
int num;
char dir;

str >> num >> dir;

我怎样才能做到类似于顶部较长字符串的内容?

1 个答案:

答案 0 :(得分:7)

您可以使用std::istringstream并循环读取流,如下所示:

std::string mystr = "13n4w14n3w2s";
std::istringstream iss{mystr};
std::vector<std::pair<int, char>> mappings; // To store the int-char pairs.
int num;
char dir;
while (iss >> num >> dir) {
    std::cout << num << std::endl;   // Next int from the stream.
    std::cout << dir << std::endl;   // Next char from the stream.
    mappings.emplace_back(num, dir); // Store the pair.
}

Here is a link to a demo on ideone.