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

read(),readline(),readlines()区别与用法

Java中bufferedReader的readline读取不到文件内容,显示的是null。