在c ++ / openGL错误中加载.txt

时间:2013-03-28 17:08:03

标签: c++ string

我有一个计算很多数字的程序,我无法将数据存储在数组中,因为RAM内存对于数据来说不够大。所以我写了一些代码,将数据放在.txt文件中。 在同一个程序中,我必须逐个加载它以使用openGL / GLUT显示数据。

现在,.txt文件如下所示:

number1;number 2;number3;number4;......number N;
number1;number 2;number3;number4;......number N;
number1;number 2;number3;number4;......number N;
...................................................................................
number1;number 2;number3;number4;......number N;

注意数字N后;来了一个“\ n”(输入)。这条线长2500个数字。
我必须逐行加载数据,所以我使用getline(); 但每一帧都需要下一行。

为了简化一下,以下是要阅读的代码:

ifstream file("example.txt", ifstream::in);
if(file.is_open())
{
    getline(file, b);
    cout<<b<<"\n"<<"\n";
    file.close();
}

此代码不是真实程序中的代码,但会显示问题。

这里的代码工作正常,它可以简单地加载第一行并在控制台屏幕上显示它。 它是在openGL中的每一帧。 所以每次opengl开始一个新的框架时我的控制台屏幕都会不断更新。

但是当我添加这个:

ifstream file("example.txt", ifstream::in);
if(file.is_open())
{
    getline(file, b);
    strcpy(resultch, b.c_str());
    cout<<b<<"\n"<<"\n";
    file.close();
}

(结果是声明为:char* resultch = new char[2550];) 代码只运行一次,程序停止后,控制台屏幕显示:

proces returned -1073741819 <0x0000005>

为什么每次都没有正常运行?

2 个答案:

答案 0 :(得分:0)

如果您:

怎么办?
ifstream file("example.txt", ifstream::in);
if(file.is_open())
{
    getline(file, b);
    resultch = malloc( b.length() + 1 );
    strcpy(resultch, b.c_str());
    cout<<b<<"\n"<<"\n";
    file.close();

    free( resultch );
}

我添加的只是根据字符串的大小分配内存。

答案 1 :(得分:-1)

试试这个:

ifstream infile;
infile.open ("example.txt", ifstream::in);

std::string line("");

int ch = infile.get();
while (infile.good()) {
    if ((char)ch=='\n'){
         resultch = line.c_str();
         line = "";
         cout << endl << endl;
    }
    else {
         line = line + (char)ch;
         cout << (char)ch; 
    }
    ch = infile.get();
}
infile.close();

这可能就是你要找的东西。