【问题标题】:readLine() not being saved properlyreadLine() 未正确保存
【发布时间】: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
  • 我已经做了几次测试,我观察到唯一发生的情况是你显示文件只有一行

标签: c++ qt c++14


【解决方案1】:

没有评论所需的声誉,但我很好奇如果您注释掉您命名为 ReadOut 1 的行会发生什么。我怀疑in.readLine() 对两个不同的调用给出了两个不同的答案,因为在此类函数的实现中,通常会使它们进一步进入输入的下一项(在本例中为下一行)。

【讨论】:

  • 这已解决,谢谢。它正在进入下一行,因此调试实际上导致它无法正常工作。
猜你喜欢
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 2019-03-14
  • 2012-01-29
相关资源
最近更新 更多