在 QFile 中写入文本

Ale*_*v92 5 c++ qt qfile

两种书写文本的方式有什么区别QFile吗?

通过使用write方法:

QFile file("test.txt");
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    file.write("My Text\n");
}
file.close();
Run Code Online (Sandbox Code Playgroud)

或者通过使用QTextStream

QFile file("test.txt")
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
     QTextStream out(&file);
     out << "My Text\n";
}
file.close()
Run Code Online (Sandbox Code Playgroud)

哪种方式是首选?性能上有区别吗?

Jas*_*lam 4

QIODevice::write是将原始数据写入设备的低级面向字节的接口。QTextStream是用于编写格式化文本的高级接口。可能是在幕后QTextStream实施的。QIODevice::write

主要用例之一QTextStream是写入QString数据。文本流处理从 UTF-16 到区域设置的默认(通常是 8 位)编码(或通过 的任何其他编码)的​​转换QTextStream::setCodec

QTextStream几乎可以肯定,它的性能会更差,因为它做得更多。然而,在大多数用例中,差异可以忽略不计。如果您手动构建一大串原始数据,那么您可能应该使用QIODevice::write. 如果您想编写格式化文本(可能包括QString),您可能应该选择QTextStream.