我有一个字符串流,我想对其进行迭代并确定其中是否存在子字符串。
我知道我可以转换为字符串并执行 std::string::find(),但我只是希望尽可能避免从字符串流到字符串的转换。
我知道以下内容不起作用,因为 istream_iterator 使用 char 作为其类型(而非字符串)
stringstream ssBody;
string sFindThis;
...
auto itr = std::find (
istreambuf_iterator<char>(ssBody),
istreambuf_iterator<char>(),
sFindThis
);
但我能否以某种方式在不转换为字符串的情况下使用 std::find 或类似的方法在 stringstream 中搜索字符串?
最佳答案
C++ 标准没有定义任何用于搜索其内容的 std::[io]?stringstream
方法。
您也不能将 std::istreambuf_iterator
与 std::search()
一起使用,因为 std::istreambuf_iterator
是一个输入迭代器, 但 std::search()
需要前向迭代器。
搜索字符串流的唯一有效方法是首先将其转换为 std::string
。
关于c++ - 我可以 std::find stringstream 中的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38765130/