要从文件中的类似字符串提取特定值,并将这些值存回另一个文档,你可以使用QString的一些函数和方法来实现。下面是一个示例代码:
#include <QCoreApplication>
#include <QFile>
#include <QTextStream>
#include <QStringList>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile inputFile("input.txt"); // 输入文件名
QFile outputFile("output.txt"); // 输出文件名
if (inputFile.open(QIODevice::ReadOnly | QIODevice::Text) &&
outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream in(&inputFile); // 输入文本流
QTextStream out(&outputFile); // 输出文本流
while (!in.atEnd()) {
QString line = in.readLine(); // 读取每一行数据
int startIndex = line.indexOf(":") + 1; // 找到冒号后的起始位置
int endIndex = line.lastIndexOf(" "); // 找到最后一个空格的位置
QString extractedValues = line.mid(startIndex, endIndex - startIndex); // 提取数值部分
QStringList valuesList = extractedValues.split(" "); // 将提取的数值以空格为分隔符拆分为列表
for (const QString& value : valuesList) {
out << value << " "; // 写入输出文本流
}
out << "\n"; // 换行
}
inputFile.close(); // 关闭输入文件
outputFile.close(); // 关闭输出文件
qDebug() << "成功处理并写入新文档";
} else {
qDebug() << "无法打开文件";
}
return a.exec();
}
在上述代码中,我们首先创建了一个输入文件对象和一个输出文件对象,并指定相应的文件名。
接着,我们通过调用open()
函数以ReadOnly
和Text
模式打开输入文件,以及以WriteOnly
和Text
模式打开输出文件。
然后,我们分行读取输入文件中的内容,并在每一行中找到冒号后的起始位置(startIndex)和最后一个空格的位置(endIndex)。
接下来,使用QString的mid()
函数提取数值部分,并将其存储在extractedValues变量中。
然后,使用QStringList的split()函数将提取的数值以空格为分隔符拆分为字符串列表valuesList。
最后,通过循环遍历valuesList,并将每个值写入输出文本流out。注意,在写入时添加一个空格作为间隔,并在最后添加换行符\n
进行换行处理。
请确保在运行此代码之前存在输入文档input.txt,并且具有正确的格式。执行代码后会生成一个新文档output.txt,其中包含从原始文档提取并处理得到的数值。
内容由零声教学AI助手提供,问题来源于学员提问