C++ 解析QTextStream

C++ 解析QTextStream,c++,qt,qtextstream,C++,Qt,Qtextstream,我的问题很简单,但我无法解决 在我的标题中: QTextStream *in = NULL; 在一种方法中,QTextStream被初始化: in = new QTextStream(&file); 然后我尝试用另一种方法解析它: QString next; if(in != NULL){ while(!in->atEnd()){ next = in->readLine(); } } else{ QMessageBox::critic

我的问题很简单,但我无法解决

在我的标题中:

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++ +……
谢谢大家!

我看到您使用
&file
初始化文本流。它看起来像是
文件
是一个局部变量,当初始化函数完成时,它将被销毁。QTextStream期望传递的IO设备在流被销毁之前是有效的。所以你有错。使用文本流时,您需要确保
文件
未被销毁。

我看到您使用
文件
初始化文本流。它看起来像是
文件
是一个局部变量,当初始化函数完成时,它将被销毁。QTextStream期望传递的IO设备在流被销毁之前是有效的。所以你有错。在使用文本流时,您需要确保
文件
没有被破坏。

您不必使用指针。您还可以在和
QFile文件
中将
QTextStream声明为类的成员变量。使用函数将
文件
设置为
对象中
的设备。可能只是将QFile设置为类成员,将QTextStream设置为处理文件的任何方法的局部变量。或者只需将文件名存储在QString中,然后用处理本地QFile的方法打开它,然后用本地QTextStream处理它。如何打开该文件?我总是调用qstringdata=file->readAll(),然后调用
in=newqtextstream(&data)您不必使用指针。您还可以在
QFile文件
中将
QTextStream声明为类的成员变量。使用函数将
文件
设置为
对象中
的设备。可能只是将QFile设置为类成员,将QTextStream设置为处理文件的任何方法的局部变量。或者只需将文件名存储在QString中,然后用处理本地QFile的方法打开它,然后用本地QTextStream处理它。如何打开该文件?我总是调用qstringdata=file->readAll(),然后调用
in=newqtextstream(&data)感谢您的输入!确实,我正在关闭文件,但即使我让它打开,我也会收到相同的错误。@user2923837,这是您正在使用的代码所期望的。当QFile走出范围时,它会关闭文件内部,即使它没有,也不会解决您的问题,因为您的Qfile必须存在只要QtStudio.@ USER(Enter):基本上这不是QT问题,它对C++的基础知识缺乏理解。谢谢输入!确实,我正在关闭文件,但即使我让它打开,我也会收到相同的错误。@user2923837,这是您正在使用的代码所期望的。当QFile退出范围时,它会关闭文件内部,即使它没有,也不会解决您的问题,因为QQfile必须存在于QQuestStudio的最长时间。@ USSRe268837:基本上这不是QT问题,它对C++的基本知识缺乏理解。