我正在制作一个必须存储物品位置的程序。 这个数据可以达到100MB以上,我想将它存储在硬盘上。 现在,我搜索了一下,有几种方法可以做到这一点:txt-file,sql,xml,...
我已经知道如何在C ++中创建一个txt文件。 但是.txt文件存储大量数据的优点是什么? 这样做的最佳方式是什么?
目前我逐行存储数字,因此我可以使用getline()
阅读它。
但是它给我带来了问题,它并没有很好地解读。
也许是因为.txt无法处理太多数据,或者因为逐行读取非常慢而且它给我带来了问题。
有人知道如何解决这个问题吗?
这里有一些代码:
_chdir("c:/Documents and Settings/Bram/Bureaublad/cloth3d");
ofstream mfile;
mfile.open("example.txt", ifstream::out);
some calculations...
mfile << (double) vervangplaats[i][j][0] << "\n";
mfile << (double) vervangplaats[i][j][1] << "\n";
mfile << (double) vervangplaats[i][j][2] << "\n";
// the data is stored in the .txt file
mfile.close();
将数据存储在txt文件中 现在我把它提取出来。
std::string b;
ifstream file("example.txt", ifstream::out);
if(file.is_open())
{
getline(file, b);
result[0][teller_x][teller_y] = (double) atof(b.c_str());
getline(file, b);
result[1][teller_x][teller_y] = (double) atof(b.c_str());
getline(file, b);
result[2][teller_x][teller_y] = (double) atof(b.c_str());
}
使用getline的最后一个函数每帧使用2500次。
框架没有加载,可能是因为每帧的getline数量很大,还是因为txt不适合存储大量数据?
答案 0 :(得分:3)
呃,在所有每帧中加载来自磁盘的数据绝不是一个好主意,这只会太慢。在开始渲染之前,必须将数据加载到内存中。
也就是说,文本文件最适合需要人类可读和便携的数据。
此类低级数据通常以二进制形式存储,这使文件更小,加载更简单,更快。