我遇到了来自fstream的getline指令的问题。 这是从我的代码片段:getline返回空字符串
boolean_1=true;
while(true)
{
if(boolean_1)
{
//some stuff
}
else
{
save_file.open("save.txt", fstream::in);
//some stuff
save_file.close();
}
mission_file.open(filename, fstream::in);
mission_file.getline(buffer_line, 256);
//some other stuff
boolean_1=false;
save_file.open("save.txt", fstream::out);
//write something
save_file.close();
}
此代码应打开mission_file它运行的第一次,并且在下次迭代打开保存文件。保存文件在每个周期结束时创建。 至少它应该像这样工作。 因为,第一次完美地工作,但在下一次迭代中,“mission_file.getline(buffer_line,256);”返回一个空行,导致程序崩溃。 另外,如果boolean_1以false开始,则循环将正常工作,直到下一个循环为止。
我已经检查过需要的“.txt”的存在,mission_file和save_file都返回is_open()true。
您似乎没有检查'getline'是否成功,可能是您想在到达最后一行后停止? – 2010-08-21 09:12:07
'getline'只有在我已经加载了一个mission_file时才会失败,完成所有的任务,然后在下一个周期开始时重新打开它。它不会失败,当我第一次打开它时,我从这段代码中省略了在EOF之前停止的代码。 – Tibor 2010-08-21 09:26:00
如果您的代码示例是完整且可编译的(尽管最小),它将有很大帮助。现在我们可以看到你有一个名为'mission_file'的变量,但是你没有显示它声明的位置或方式,或者你执行的所有相关操作。 – 2010-08-21 09:30:55