如何阅读涉及模板的c ++错误

JnB*_*ymn 8 c++

我正在学习C++.我经常会得到看起来像这样的错误

/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/basic_string.h:1458:从'static _CharT*std :: basic_string <_CharT,_Traits,_Alloc> :: _ S_construct_aux实例化( _InIterator,_InIterator,const _Alloc&,std :: __ false_type)[with _InIterator = std :: istream_iterator,std :: allocator>,char,std :: char_traits,int>,_ Charrt = char,_Traits = std :: char_traits,_Alloc =的std ::分配器]"

我如何理解这一点,以便我至少可以找到一些地方来寻找解决方案?

如果您有兴趣,原始代码是:

#include <iostream>
#include <fstream>
#include <string>
#include <iterator>

using namespace std;

int main(int argc, char **argv) {
    string fileName = "example.txt";
    ifstream ifile(fileName.c_str());

    istream_iterator<string> begin(ifile);
    istream_iterator<string> end;

    string s(begin,end);
    cout << s;
}
Run Code Online (Sandbox Code Playgroud)

Unc*_*ens 6

这不是整个错误,只是对一个实例的描述.

基本上你关心的是:

1)代码中的哪一行触发了错误(string s(begin,end);)

2)它导致什么错误(例如cannot convert 'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to 'char' in assignment)和在哪里

3)您可以比较编译器所说的模板参数是什么,以及您认为它们是什么.

它可能需要一些经验,不要害怕错误,它肯定有助于很好地了解库.

在这种情况下,原因是字符串的构造函数期望一系列字符,但是您传递的是一系列字符串.