Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt5中的特定条目打开/关闭文件_C++_Io_Qt5 - Fatal编程技术网

C++ 如何在Qt5中的特定条目打开/关闭文件

C++ 如何在Qt5中的特定条目打开/关闭文件,c++,io,qt5,C++,Io,Qt5,我正在做一个程序,需要能够在特定的点编辑文件,特定的行不会做,因为行数会随着时间的推移而改变。我计划用qt的textEdit菜单元素来实现这一点 例如,假设我有一个文件,其中某处有一条注释,如下所示: #qtread lots of stuff #qtend 有没有办法让Qt文本编辑打开文件,只编辑qtread和qtend条目之间的内容 另外,我是Qt的初学者,所以一个愚蠢的回答将是极好的,谢谢 您可以像这样逐行读取文件。创建一个bool,指示是否读取,例如readEnabled。阅读该行后,

我正在做一个程序,需要能够在特定的点编辑文件,特定的行不会做,因为行数会随着时间的推移而改变。我计划用qt的textEdit菜单元素来实现这一点

例如,假设我有一个文件,其中某处有一条注释,如下所示:

#qtread
lots
of
stuff
#qtend
有没有办法让Qt文本编辑打开文件,只编辑qtread和qtend条目之间的内容


另外,我是Qt的初学者,所以一个愚蠢的回答将是极好的,谢谢

您可以像这样逐行读取文件。创建一个bool,指示是否读取,例如readEnabled。阅读该行后,检查您的代币:

QFile inputFile(fileName);
QString outputText, startToken = "#qtread", endToken = "#qtend";

if (inputFile.open(QIODevice::ReadOnly))
{
    QTextStream in(&inputFile);
    bool readEnabled = false;

    while (!in.atEnd())
    {
        QString line = in.readLine();

        if(line == endToken) // the whole line has to match your comment
            readEnabled = false;

        if(readEnabled)
            outputText.append(line + "\n");

        if(line == startToken)
            readEnabled = true;
    }

    inputFile.close();
}
你可能想改进一下。如果您想在注释后立即开始阅读,或者接受带有尾随空格的注释,请参阅QString::left、QString::mid、QString::right,并尝试将它们放在一起

编辑:


对不起,我忽略了你也想把它存回去。在这种情况下编写文件实际上要困难得多,我会用C++标准库来做。我鼓励您搜索,发布一个不带qt标志的新问题。

该代码看起来应该可以工作,但由于某些原因,它不适合我,输出将成为整个文件。下面是我的测试代码:下面是文件的内容:在两个while循环中,输出将从头到尾成为整个文件的内容。编辑:我将把这些问题分开。为什么您将ifreadEnabled更改为ifreadEnabled=true?错误:/I我修复了这个问题,现在效果很好,谢谢!这就是为什么我没有显式地写==true: