在QFile中写入文字

时间:2018-10-29 08:25:33

标签: c++ qt 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()

哪种方式更可取?性能上有什么区别吗?

1 个答案:

答案 0 :(得分:2)

QIODevice::write是面向字节的低级接口,用于将原始数据写入设备。 QTextStream是用于编写带格式文本的高级界面。 QTextStream可能是根据QIODevice::write来实现的。

QTextStream的主要用例之一是写入QString数据。文本流处理从UTF-16到您的语言环境的默认(通常为8位)编码(或通过QTextStream::setCodec进行的其他编码)的​​转换。

QTextStream几乎可以肯定会表现得更差,因为它的表现更多。但是,在大多数使用情况下,差异可以忽略不计。如果您要手动构建大量原始数据,则可能应该使用QIODevice::write。如果要编写格式化的文本(可能包含QString),则应该选择QTextStream