fstream中多个get()和单个getline()之间的理论性能差异

时间:2014-09-28 08:03:52

标签: c++ fstream

说我正在读文件。

ifstream f("file.txt");

while (f.good())
{
  char c = is.get();
}

VS

ifstream f("file.txt");
string line;
while(f.good())
{
  getline(f, line);
}

理论上它是否会有所不同,因为文件句柄在整个文件读取期间保持打开状态?

1 个答案:

答案 0 :(得分:1)

取决于

如果您的流未缓存,则两个版本之间可能存在明显差异。如果由于某种原因您没有打开文件而是非常快的内存流,则对get的多次调用可能会变慢。当然,这也取决于getline的实施方式。

因此存在理论上的差异。当然,要查看是否存在实际差异,您应该尝试一下。你有可能没有发现任何差异。