我的问题很简单,但我无法解决这个问题......
在我的标题中:
QTextStream *in = NULL;
在一个方法中,QTextStream被初始化:
in = new QTextStream(&file);
然后我试图用另一种方法解析它:
QString next;
if(in != NULL){
while(!in->atEnd()){
next = in->readLine();
}
}
else{
QMessageBox::critical(this, "Error", "No file to test!");
}
初始化工作正常时,如果中的 atEnd(),应用程序会在测试时崩溃。我究竟做错了什么?我需要 in 才能从多个方法访问。我必须在这里使用一个指针(?),因为中的会在以后被初始化(AFAIK,这是参考不可能的)
这可能是显而易见的,但我对c ++来说相当新...
谢谢!
答案 0 :(得分:6)
我看到您使用&file
初始化文本流。看起来file
是一个局部变量,它在初始化函数完成时被销毁。 QTextStream期望传递的IO设备有效,直到流被销毁。所以你得到了段错误。您需要确保在使用文本流时不会销毁file
。