STD :: Stringstream一次仅支持一个输入

std::stringstream only supports one input at a time?

本文关键字:一个 输入 支持 一次 STD Stringstream      更新时间:2023-10-16

因为 std::stringstream是stzream,根据文档,您可以执行流支持的任何操作。

所以我希望以下样本可以正常工作,但似乎效果不佳。我正在使用MINGW与GCC 4.8.3。

变体A:

std::string s;
std::stringstream doc;
doc << "Test " << "String ";
doc << "AnotherString";
doc >> s;
std::cout << s << std::endl;

变体B:

std::string s;
std::stringstream doc;
doc << "Test ";
doc << "AnotherString";
doc >> s;
std::cout << s << std::endl;

输出仅是

Test 

我期望它会串联单个字符串,直到我从流回到那里的流中读取。

那么,串联弦的适当方法是什么?我真的必须单独读取每个人并手动串联它们,这在C 中对我来说似乎很尴尬。

它将每个字符串都放入 doc,以便其内容为:

Test String AnotherString

然后,当您使用doc >> s提取时,它仅读取到第一个空格。如果要将整个流以字符串的形式获取,则可以调用str

std::cout << doc.str() << std::endl;

它只会读取一个单词,直到使用 stream >> s直到白空间。此外, @josephmansfield的使用str()的答案,或者您可以使用getline()(如果字符串不包含新行,则可以完美工作):

getline(doc, s);