先让我来吹嘘一下:这种技术2行代码就可以读到文件所有内容哦
第一种方式:
#include <iterator>
#include <fstream>
ifstream inputFile("interestingData.txt");
// 把inputFile读入fileData
string fileData( ( istream_iterator<char>(inputFile) ), istream_iterator<char>());
特点:这种方法无法把文件中的空格拷贝到字符串中。那是因为istream_iterators使用operator>>函数来进行真的读取,而且operator>>函数在默认情况下忽略空格。
第二种方式:
#include <iterator>
#include <fstream>
fstream inputFile("interestingData.txt");
// 关闭inputFile的忽略空格标志
//在我gcc 4.1 和vs2013中均编译不过去,报错原因是没有unset成员函数
inputFile.unset(ios::skipws);
string fileData((istream_iterator<char>(inputFile)), istream_iterator<char>());
第三种方式:
fstream inputFile("interestingData.txt");
string fileData((istreambuf_iterator<char>(inputFile)), istreambuf_iterator<char>())
特点:istreambuf_iterator不忽略任何字符。它们只抓取流缓冲区的下一个字符