gpt4 book ai didi

c++ - 使用 stringstream 从循环中的另一个字符串构建字符串

转载 作者:行者123 更新时间:2023-11-28 01:39:46 24 4
gpt4 key购买 nike

我想用 getline() 循环输入的字符串构建一个字符串

cin >> n;
string all,line;
stringstream ss;

for (int i = 0; i < n; i++)
{
ss.clear();
line.clear();
cin.ignore();
getline(cin, line, '\n');
ss.str(line);
all += ss.str();

}
cout << all << endl;;

我预计:

input:
2
word
word

output:
wordword

我得到的不是这个:

input:
2
word
word

output:
wordord

我找不到解决方案。有人可以帮助我吗?

最佳答案

>>> 运算符不同,getline() 使用换行符。然后你的下一次迭代 ignore() 是下一行的 w

只需将 ignore 移出循环即可产生所需的结果。

不过,你有点过于复杂了——你不需要通过 stringstream 来“绕道”:

cin >> n;
cin.ignore();
string all;
for (int i = 0; i < n; i++)
{
string line;
getline(cin, line);
all += line;
}
cout << all << endl;

但是,您可以将整个内容累积到一个流中,然后再进行转换(效率更高):

cin >> n;
cin.ignore();
ostringstream all_stream;
for (int i = 0; i < n; i++)
{
string line;
getline(cin, line);
all_stream << line;
}
string all = all_stream.str();
cout << all << endl;

关于c++ - 使用 stringstream 从循环中的另一个字符串构建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730285/

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