我正在运行C++代码,我需要从txt文件导入数据。
文本文件包含10,000行。每行包含n列二进制数据。

该代码必须循环100,000次,每次必须从txt文件中随机选择一行并将列中的二进制值分配给某些变量。

编写此代码的最有效方法是什么?我应该先将文件加载到内存中还是应该随机打开一个随机行号?

如何在C++中实现呢?

最佳答案

要随机访问文本文件中的一行,所有行都必须具有相同的字节长度。如果没有,则需要循环直到到达正确的行。由于这对于这么多的访问来说非常慢,因此最好将其加载到std::vectorstd::string中,每个条目都是一行(这很容易用std::getline完成)。或者由于要从不同的列分配值,因此可以将std::vector与自己的结构一起使用,例如

struct MyValues{
  double d;
  int i;
  // whatever you have / need
};

std::vector<MyValues> vec;

与其一直解析该行,不如更好。

使用std::vector,您可以进行随机访问,只需要遍历整个文件一次即可。

关于c++ - C++读取txt的随机行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6514774/

10-17 02:02