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

Joh*_*0te 4 c++ stl

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

vector<string> col1;
copy(istream_iterator<string>(cin), istream_iterator<string>(),
    back_inserter(col));
Run Code Online (Sandbox Code Playgroud)

我如何做类似的事情从文件流直接读入容器?让我们说一个包含内容的简单文件:

"快速的棕色狐狸跳过懒狗."

我希望每个单词都是复制行后面向量中的一个单独元素.

Naw*_*waz 11

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

ifstream file("file.txt");

copy(istream_iterator<string>(file), istream_iterator<string>(),
                                                 back_inserter(col));
Run Code Online (Sandbox Code Playgroud)

实际上,您可以替换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));
Run Code Online (Sandbox Code Playgroud)

知道了吗?col将包含您传递给的字符串的单词std::stringstream.


Nim*_*Nim 6

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