小编use*_*782的帖子

为什么istream_iterator <string>(ifstream("test.txt"))会导致错误?

我试图编写一个代码来从名为"test.txt"的文件中读取字符串,并将字符串写入标准输出.以下代码效果很好:

 int main()
 {
     using namespace std;
     ifstream file("test.txt");
     copy(istream_iterator<string>(file), 
          istream_iterator<string>(), 
          ostream_iterator<string>(cout, " ")); 
 }
Run Code Online (Sandbox Code Playgroud)

但是,通过此修改,代码不再编译:

   int main()
   {
        using namespace std;
        copy(istream_iterator<string>(ifstream("test.txt")),  // <-- Error here
        istream_iterator<string>(), 
        ostream_iterator<string>(cout, " "));   
   }
Run Code Online (Sandbox Code Playgroud)

这个版本为什么不编译?

我使用的编译器是g ++ 4.6.2,错误如下:

ex11-16.cpp:16:65: error: no matching function for call to 'std::istream_iterator<std::basic_string<char> >::istream_iterator(std::ifstream)'
ex11-16.cpp:16:65: note: candidates are:
.../bits/stream_iterator.h:72:7: note: std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator(const std::istream_iterator<_Tp, _CharT, _Traits, _Dist>&) [with _Tp = std::basic_string<char>, _CharT = char, _Traits = std::char_traits<char>, _Dist = int, std::istream_iterator<_Tp, _CharT, _Traits, _Dist> = std::istream_iterator<std::basic_string<char> >] …
Run Code Online (Sandbox Code Playgroud)

c++ iostream istream-iterator ifstream

4
推荐指数
1
解决办法
1022
查看次数

标签 统计

c++ ×1

ifstream ×1

iostream ×1

istream-iterator ×1