在 QFile 中写入文本
Writing text in QFile
QFile
两种写法有区别吗?
通过使用write
方法:
QFile file("test.txt");
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
file.write("My Text\n");
}
file.close();
或使用 QTextStream
:
QFile file("test.txt")
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << "My Text\n";
}
file.close()
首选哪种方式?性能有什么不同吗?
QIODevice::write
是面向字节的低级接口,用于将原始数据写入设备。 QTextStream
是用于编写格式化文本的高级接口。 QTextStream
可能是根据 QIODevice::write
在后台实现的。
QTextStream
的主要用例之一是写入 QString
数据。文本流处理从 UTF-16 到您语言环境的默认(通常是 8 位)编码(或通过 QTextStream::setCodec
的任何其他编码)的转换。
QTextStream
几乎可以肯定表现更差,因为它做的更多。但是,在大多数用例中,差异可以忽略不计。如果您手动构建大量原始数据,那么您可能应该使用 QIODevice::write
。如果你想写格式化的文本(可能包括 QString
),你应该选择 QTextStream
.
QFile
两种写法有区别吗?
通过使用write
方法:
QFile file("test.txt");
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
file.write("My Text\n");
}
file.close();
或使用 QTextStream
:
QFile file("test.txt")
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << "My Text\n";
}
file.close()
首选哪种方式?性能有什么不同吗?
QIODevice::write
是面向字节的低级接口,用于将原始数据写入设备。 QTextStream
是用于编写格式化文本的高级接口。 QTextStream
可能是根据 QIODevice::write
在后台实现的。
QTextStream
的主要用例之一是写入 QString
数据。文本流处理从 UTF-16 到您语言环境的默认(通常是 8 位)编码(或通过 QTextStream::setCodec
的任何其他编码)的转换。
QTextStream
几乎可以肯定表现更差,因为它做的更多。但是,在大多数用例中,差异可以忽略不计。如果您手动构建大量原始数据,那么您可能应该使用 QIODevice::write
。如果你想写格式化的文本(可能包括 QString
),你应该选择 QTextStream
.