0

我正在制作一个必须存储对象位置的程序。这个数据可以达到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 不适合存储大量数据?

4

1 回答 1

3

呃,每帧从磁盘加载数据从来都不是一个好主意,那太慢了。在开始渲染之前,您必须将数据加载到内存中一次。

也就是说,文本文件最适合需要人类可读和可移植的数据。

诸如此类的低级数据通常以二进制形式存储,这使得文件更小,加载更简单、更快。

于 2013-03-27T10:03:34.730 回答