//假如想将文本文件的内容复制到一个string对象中
ifstream inputFile("inputData.txt");
string fileData(istream_iterator<char>(inputFile), istream_iterator<char>());
//但是这段代码不会将空白字符复制到string对象中, istream_iterator使用operator>>函数来完成实际的操作
//但是默认情况下operator>>会跳过空白的字符.
加上inputFile.unsetf(ios::skipws)即可禁止忽略空格
//假如想将文本文件的内容复制到一个string对象中
ifstream inputFile("inputData.txt");
inputFile.unsetf(ios::skipws);//禁止忽略inputFile中的空格
string fileData(istream_iterator<char>(inputFile), istream_iterator<char>());
istreambuf_iterator的使用方法与istream_iterator大致相同,但是istreambuf_iterator对象直接从流的缓冲区中读取下一个字符。如下所示:
//假如想将文本文件的内容复制到一个string对象中
ifstream inputFile("inputData.txt");
string fileData(istreambuf_iterator<char>(inputFile), istreambuf_iterator<char>());
上边的代码不用加上inputFile.unsetf(ios::skipws)就行。
同样的,可以使用ostreambuf_iterator来代替ostream_iterator,与istream_iterator相比,使用buf的方案要快的多,有实验表明,速度提高了进40%。