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++的基本知识缺乏理解。