c++ - 我可以 std::find stringstream 中的字符串吗?

标签 c++ c++11 find std

我有一个字符串流,我想对其进行迭代并确定其中是否存在子字符串。

我知道我可以转换为字符串并执行 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_iteratorstd::search() 一起使用,因为 std::istreambuf_iterator 是一个输入迭代器, 但 std::search() 需要前向迭代器。

搜索字符串流的唯一有效方法是首先将其转换为 std::string

关于c++ - 我可以 std::find stringstream 中的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38765130/

相关文章:

c++ - 含义 std::mutex unlock 与 lock 同步以重新获取

C++ 在固定大小为 9 的右填充空终止字符数组中查找第一个空格的最快方法

c++ - Windows 文件权限作为字符串

c++ - 是否有返回字符的 ASCII 值的函数? (C++)

c++ - 如何使用 for_each 获取 vector 中值的索引?

c++ - 将 std::strings 的 std::vector 解析为任意类型的 std::tuple

linux - 使用 "find"命令时如何排除多个子目录?

python - 如何在 Python 中查找具有不区分大小写的特定扩展名的文件

c++ - Qt ISODate 格式的日期/时间包括时区

c++ - 将两个 float 相除并不能给出准确的结果