QTextStream 是 Qt 库中的一个类,用于处理文本流。它提供了一套简洁易用的 API 来读取和写入文本数据,可以与多种数据源一起工作,如 QFile(文件)、QIODevice、QString 和 QByteArray。以下是一些基本的 QTextStream 使用方法:
1. 构造 QTextStream 对象
#cpp
// 从 QFile 对象创建文本流
QFile file("example.txt");
if (file.open(QIODevice::ReadWrite | QIODevice::Text)) {
QTextStream in(&file);
// ... 用于读取
QTextStream out(&file);
// ... 用于写入
}
// 从 QString 创建文本流
QString str;
QTextStream stream(&str);
stream << "Hello, World!"; // 将字符串写入到 str 中
// 从 QByteArray 创建文本流
QByteArray data;
QTextStream byteStream(&data);
byteStream << "Some text data";
2. 读取操作
#cpp
QFile inputFile("input.txt");
if (inputFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&inputFile);
while (!in.atEnd()) {
QString line = in.readLine(); // 逐行读取
qDebug() << line;
}
}
3. 写入操作
#cpp
QFile outputFile("output.txt");
if (outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&outputFile);
out << "Writing some text to the file...\n";
out << "Line 2...\n";
out << QStringLiteral("Line 3 with formatted value: %1").arg(42); // 格式化输出
}
4. 格式化输出
QTextStream 支持类似 C++ iostreams 的格式化输出:
#cpp
QTextStream cout(stdout);
cout.setRealNumberPrecision(2); // 设置浮点数精度
cout << "The value is: " << 3.14159 << endl; // 输出格式化的浮点数
5. 其他操作
- 设置编码:
setCodec(const QTextCodec * codec)
,用于指定文本流的编码方式。 - 设置字段分隔符:
setFieldSeparator(const QString & sep)
,用于 CSV 等格式的数据读写。 - 获取或设置数值基数:
setIntegerBase(int base)
,用于十六进制、八进制等输出。
通过 QTextStream,您可以方便地进行文本数据的读取、写入以及格式化处理,适用于开发需要与文本文件交互的应用程序。