我正在运行C++代码,我需要从txt文件导入数据。
文本文件包含10,000行。每行包含n列二进制数据。
该代码必须循环100,000次,每次必须从txt文件中随机选择一行并将列中的二进制值分配给某些变量。
编写此代码的最有效方法是什么?我应该先将文件加载到内存中还是应该随机打开一个随机行号?
如何在C++中实现呢?
最佳答案
要随机访问文本文件中的一行,所有行都必须具有相同的字节长度。如果没有,则需要循环直到到达正确的行。由于这对于这么多的访问来说非常慢,因此最好将其加载到std::vector
的std::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/