readLine() 未正确保存
Posted
技术标签:
【中文标题】readLine() 未正确保存【英文标题】:readLine() not being saved properly 【发布时间】:2017-04-21 22:32:17 【问题描述】:void LoadWindow::on_Load_Open_Button_clicked()
QString load_filepath = ui->Load_FilePath_TextBox->text(); //Get text from textBox
load_filepath.replace("\\","/"); //Replaces all '\' with '/' for filepath reading
QFile loadFile(load_filepath);
if (loadFile.open(QIODevice::ReadOnly)) //Open the file in read-only mode and only reads if file was opened properly
QTextStream in(&loadFile);
qDebug() << "line in = " << in.readLine(); //ReadOut 1
QString x = in.readLine();
qDebug() << "x = " << x; //ReadOut 2
ExtractInfo(x);
else
//error
loadFile.close();
ReadOut 1 显示读入文件,但 ReadOut 2 正在打印“”,因此未分配 x。我尝试了许多变体,包括 .append() 和串联,但仍未分配。包括所有必需的库。
欢迎任何帮助,这可能是愚蠢的。在 Qt 中完成。
问候
【问题讨论】:
文件的第二行必须为空,因此x
在第二次调用readLine
后包含一个空字符串。或者,第一行之后没有内容,所以x
包含一个“空”QString。
那么如果我初始化 x 变量并使用连接或附加,它会解决这个问题吗?
您可以显示您打开的文件的示例,我运行了相同的代码并且没有任何问题。我使用 Linux 和 Qt 5.8
我已经做了几次测试,我观察到唯一发生的情况是你显示文件只有一行
【参考方案1】:
没有评论所需的声誉,但我很好奇如果您注释掉您命名为 ReadOut 1
的行会发生什么。我怀疑in.readLine()
对两个不同的调用给出了两个不同的答案,因为在此类函数的实现中,通常会使它们进一步进入输入的下一项(在本例中为下一行)。
【讨论】:
这已解决,谢谢。它正在进入下一行,因此调试实际上导致它无法正常工作。以上是关于readLine() 未正确保存的主要内容,如果未能解决你的问题,请参考以下文章
Windows 8 - .NET TCP AcceptAsync 回调未触发(被 Console.ReadLine() 阻止)
未加载库:/usr/local/opt/readline/lib/libreadline.6.dylib (LoadError)
正确地在while循环中使用BufferedReader.readLine()
php -v 返回 dyld:库未加载:/usr/local/opt/readline/lib/libreadline.7.dylib