![](/img/trans.png)
[英]How do I use std::copy_if by both coping elements and removing those elements from the original container
[英]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.