gpt4 book ai didi

c++ - 使用 sstream 遍历字符串

转载 作者:行者123 更新时间:2023-11-30 02:20:27 25 4
gpt4 key购买 nike

这是一段代码:

#include <sstream>
#include <iostream>

using namespace std;

int main()
{
stringstream ss;
string st = "2,3,55,33,1124,34";
int a;
char ch;
ss.str(st);
while(ss >> a)
{
cout << a << endl;
ss >> ch;
}
return 0;
}

它产生输出:

2
3
55
33
1124
34

但是如果我删除 ss >> ch 行,它会产生输出:2

为什么它停止遍历字符串? ss >> ch 有什么区别?

最佳答案

What difference does ss >> ch make?

ss >> ch 从您的流中获取一个字符并将其存储在您的 char ch 变量中。

所以在这里它会从您的字符串中删除每个逗号 (,)。


Why does it stop iterating through the string without ss >> ch?

如果没有这个操作,你的迭代就会停止,因为 ss >> a 失败了,因为它试图在 a 中存储一个逗号,一个 int 变量。


注意:如果将逗号替换为空格,则可以删除 ss >> ch,因为空格被识别为分隔符。

例子:

#include <sstream>
#include <iostream>

using namespace std;

int main()
{
stringstream ss;
string st = "2 3 55 33 1124 34";
int a;
ss.str(st);
while (ss >> a)
cout << a << endl;
return 0;
}

关于c++ - 使用 sstream 遍历字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49625992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com