【发布时间】:2014-07-28 20:56:27
【问题描述】:
我想通过使用其范围构造函数将文本文件中的所有行加载到vector<string 中,然后通过cout 输出它们:
#include<iostream>
#include<fstream>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
ifstream file("file.txt");
vector<string> strings(istream_iterator<string>(file) , istream_iterator<string>());
for(auto s : strings)
cout << s << endl;
return 0;
}
在尝试编译上述代码时,我遇到了几个错误,例如:
error: no matching function for call to ‘begin(std::vector<std::basic_string<char> > (&) (std::istream_iterator<std::basic_string<char> >, std::istream_iterator<std::basic_string<char> > (*) ()))’
for(auto s : strings)
^
还有其他几个……
我想我在这里遗漏了一些明显的东西,有人可以帮忙吗?
【问题讨论】:
-
知道了。我应该删除这个问题还是自己回答?
-
尝试将至少一个迭代器声明为单独的变量,这样可以消除歧义。伙计,这真的很糟糕。
-
如果你有一个好的答案,那就去吧。
标签: c++ c++11 vector fstream most-vexing-parse