ifstream inputfile("xxxx");
string fileDate((istream_iterator<char>(inputfile)), istream_iterator<char>());
在流输入的时候遇到空格就跳过,也就是不会读入空格字符。
istream_iterator
使用operator>>来完成这个读入操作的,然而operator>>会跳过空白字符。
跳过skipws标志
ifstream inputfile("xxxx");
inputfile.unsetf(is::skipws);//禁止忽略inputfile中的空格
string fileDate((istream_iterator<char>(inputfile)), istream_iterator<char>());
每调用一次operator>>都会附加好多操作:
所以,在需要对逐个字符串读取的情况下,使用ifstream inputfile("xxxx");
时效率是非常低下的。
ifstream inputfile("xxxx");
string fileDate((istreambuf_iterator<char>(inputfile)), istreambuf_iterator<char>());
经有人测试,效率比原来的提高40%。
《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》
原文:https://www.cnblogs.com/liangjf/p/10634078.html