c++ - C++中流的优点是什么?

标签 c++ qt filestream

我主要使用 C++ 中的 Qt 框架。任何人都可以向我解释使用文本流对象而不是直接使用对象的优势吗?

这是一个没有 QTextStream 的示例代码;

QFile file("asd.txt");
// assuming that file exists
file.open(QIODevice::Append);
file.write("asd");
file.close();

使用下面的代码代替上面的代码有什么优点(或缺点);

QFile file("asd.txt");
// assuming that file exists
file.open(QIODevice::Append);
QTextStream tStream(file);
file << "asd";
file.close();

提前致谢。

最佳答案

QFile::write 要么写入一个以 nul 结尾的 C 字符串,要么写入您提供的二进制数据。

QTextStream 在另一方面进行文本格式化/转换。

  • 它只处理文本输出/输入,不处理任意二进制数据。
  • 您可以给它一个原始类型(int、float、long 等),它会将其转换为文本表示
  • 您可以让它读取文本并转换为原始类型。
  • 您可以让它进行格式化输出,例如pad 或左/右调整文本。
  • 您可以设置文本编码(例如UTF-8、UTF-16)
  • 它缓冲数据,可能导致更少的系统调用。 请注意,这意味着您的代码应在关闭文件之前调用 tStream.flush();

关于c++ - C++中流的优点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34200796/

相关文章:

c++ - 为什么不创建 vector vector 中的对象

windows - QT 5.1.1 : Checkbox in QWebview shows strange behavior under Win 7 (x64)/Win 8

ruby-on-rails - 使用 SQL Server 2008/2012 的 Rails - 文件流

.net - FileStream和StreamWriter-写入后如何截断文件的其余部分?

c# - 将字节数组转换为图像 : Parameter is not valid

c++ - MFC 在应用程序的所有 View 上共享一个静态标签

c++ - OpenGL闪电

c++ - 在 Qt 中使用 QRubberBand 裁剪图像

c++ - 如何重复打印相同的值?

c++ - Qt C++ ffmpeg 找不到库