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

标签 c++ string merge getline stringstream

我想用 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/

相关文章:

c++ - Inventory.h 中 vector 的添加方法出错

c++ - 将固定长度的数据从 std::istream 复制到字符串

javascript - 如何将文本节点拆分为每个 3 个单词的跨度?

C中带空格的char转换为int

vb6 - Visual Studio 2012 合并 VB6 代码会自动对代码进行错误更改

c++ - 如何用 C++ 编写通用排序函数?

c++从父类实例化 protected 成员

python - Python 如何从 argparse 填充字符串

bash - 如何使用 awk 基于公共(public)字段合并文件中的行?

python pandas dataframe 连接两个数据框