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