我希望迭代这样的字符串:
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;
我怎样才能做到类似于顶部较长字符串的内容?
答案 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.
}