如何 open/close 在 Qt5 中的特定条目处归档
How to open/close file at a specific entry in Qt5
我正在制作一个需要能够在特定点编辑文件的程序,特定行不会执行,因为行数会随着时间而改变。我打算用 qt 的 textEdit 菜单元素来做到这一点。
例如,假设我有一个文件,其中某处有评论,如下所示:
#qtread
lots
of
stuff
#qtend
有什么方法可以让 Qt 文本编辑打开文件并只编辑 #qtread 和 #qtend[=22= 之间的任何内容] 个条目?
(另外,我是 Qt 的新手,所以一个白痴的答案会很棒,谢谢!)
您可以像 this 一样逐行阅读您的文件。创建一个 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++ 标准库来完成。我鼓励您搜索 post 一个没有 qt 标志的新问题。
我正在制作一个需要能够在特定点编辑文件的程序,特定行不会执行,因为行数会随着时间而改变。我打算用 qt 的 textEdit 菜单元素来做到这一点。
例如,假设我有一个文件,其中某处有评论,如下所示:
#qtread
lots
of
stuff
#qtend
有什么方法可以让 Qt 文本编辑打开文件并只编辑 #qtread 和 #qtend[=22= 之间的任何内容] 个条目?
(另外,我是 Qt 的新手,所以一个白痴的答案会很棒,谢谢!)
您可以像 this 一样逐行阅读您的文件。创建一个 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++ 标准库来完成。我鼓励您搜索 post 一个没有 qt 标志的新问题。