簡體   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