ifstream     in("test.txt");   
  方法1   
  string   str(   (istreambuf_iterator<char>(in)),   (istreambuf_iterator<char>())   );  
 
  方法2   
  string   str;   
  copy(   istreambuf_iterator<char>(in),   istreambuf_iterator<char>(),   back_inserter(str)   ); 那位大大能解释下上述调用的原理,看的好晕额,越详细越好。分全送上

解决方案 »

  1.   

    istreambuf_iterator <char>(in) 这个是in的起始iterator
    istreambuf_iterator <char>() 这个是end iteratorcopy(起始it,结束it,...str)
    就是把it抄到str里面...........
      

  2.   

    看不懂的话还是使用循环读取吧.
    while(cin>>c)
      

  3.   

    string  str(  (istreambuf_iterator <char>(in)),  (istreambuf_iterator <char>())  );string实际上是basic_string的一个typedef,而basic_string的一个构造函数:
    template<class InIter>basic_string(InIter start, InIter end, const Allocator &a = Allocator())就是形式构造一个字符串,该串包含start和end指定的范围内的元素