繁体   English   中英

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

[英]How can I use std::copy to read directly from a file stream to a container?

我遇到了一个很酷的STL示例,该示例使用istream_iterators从std输入(cin)复制到向量。

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

我将如何做类似的事情,将文件流直接读取到容器中? 我们只说一个包含内容的简单文件:

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

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

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

ifstream file("file.txt");

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

实际上,您可以用任何C ++标准输入流替换cin

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的字符串的单词。

与fstream实例而不是cin完全相同。

我认为不需要复制功能,因为矢量具有一个以begin和end作为迭代器的构造函数。

因此,我认为这对您来说还可以:

ifstream file("file.txt");
vector<string> col((istream_iterator<string>(file)), istream_iterator<string>());

多余的()是删除Most_vexing_parse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM