c++ - 如何使用 std::copy 直接从文件流读取到容器?

标签 c++ stl

我遇到了一个很酷的 STL 示例,它使用 istream_iterators 将标准输入 (cin) 复制到 vector 。

vector<string> col1;
copy(istream_iterator<string>(cin), istream_iterator<string>(),
    back_inserter(col));

我将如何执行类似于从文件流直接读取到容器中的操作?假设它是一个包含以下内容的简单文件:

“敏捷的棕色狐狸跳过了懒惰的狗。”

我希望每个单词在复制行之后成为 vector 中的一个单独元素。

最佳答案

打开文件成功后将cin替换为文件流对象:

ifstream file("file.txt");

copy(istream_iterator<string>(file), istream_iterator<string>(),
                                                 back_inserter(col));

事实上,您可以将cin 替换为任何C++ 标准输入 流。

std::stringstream ss("The quick brown fox jumped over the lazy dogs.");

copy(istream_iterator<string>(ss), istream_iterator<string>(),
                                                 back_inserter(col));

明白了吗? col 将包含您传递给 std::stringstream 的字符串中的单词。

关于c++ - 如何使用 std::copy 直接从文件流读取到容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152427/

相关文章:

c++ - 将容器 value_type 作为模板参数传递?

c++ - OpenGL 的子窗口不响应 gluOrtho2D()

c++ - 我如何使用 OpenCV 重写这个 warp-affine?

c++ - 在 Objective C++ 中将字符串放入二维矩阵

c++ - 当客户端关闭连接时 send() 不报告 ENOTCONN (AS400)

c++ - 使用较少的 STL 运算符对点进行排序

c++ - STL 排序保留原始顺序

c++ - STL::Map - 遍历列表还是使用查找?

c++ - 测试 std::bitset 中的位范围

c++ - 为什么没有 std::erase?