【发布时间】:2014-08-26 15:38:34
【问题描述】:
我有一个 .txt 文件,其中包含 6291456 个数字,仅此而已。全部读完并将push_back放入向量后,vector.size()函数返回6291457。这个额外的元素是从哪里来的?
int disparity;
ifstream disparity_txt;
disparity_txt.open(path);
while(!disparity_txt.eof())
{
disparity_txt >> disparity;
vec_disparities.push_back(disparity);
}
cout << vec_disparities.size() << endl;
disparity_txt.close();
【问题讨论】:
-
...不要使用
endl,除非你真的想要一个缓冲区刷新(以~10:1的速度损失)以及写一个新行字符。 -
如果错误的流包含非数字数据,如普通文本,你会得到一个无限循环。最终在耗尽内存时崩溃。