当然可以捕获不同的输出并对其进行处理:您将创建一个流缓冲区来检测换行符,并对自最后一个换行符以来接收到的字符进行处理。只有这样你才能将字符串转发到其他地方。虽然可行,但我怀疑这真的是你想要做的。
如果你想std::string
从一个流中捕获所有 s 并且你不希望每个都有一个特定的名称,例如,因为你不知道有多少字符串,你可以将它们存储到std::vector<std::string>
using
std::vector<std::string> strings{ std::istream_iterator<std::string>(iss),
std::istream_iterator<std::string>() };
... 或者
std::vector<std::string> strings;
std::copy(std::istream_iterator<std::string>(iss),
std::istream_iterator<std::string>(),
std::back_inserter(strings));
如果您想在单个变量中包含字符串,您只需将它们读入变量并确保您读取所有变量:
std::string a, b, c;
if (iss >> a >> b >> c) {
std::cout << "read a='" << a << "' b='" << b << " c='" << c << "'\n";
}
else {
std::cout << "failed to read three strings from line '" << text << "'\n";
}