Qt应用程序在控制台上的文本流

Qt app text stream on console

本文关键字:文本 控制台 应用程序 Qt      更新时间:2023-10-16

我在Qt上看到过许多显示控制台消息的模式,但是,它们之间有什么区别:

  • 使用iostream和std::cin
  • 使用Qdebug
  • 使用QTextStream

在什么情况下使用它们更好?

谢谢!

<iostream>头和std::cout(*)变量是标准c++库的一部分,而不是Qt特定的功能。如果您在项目中使用其他非基于qt的外部库,则更有可能在这些库中定义的类提供流操作符重载以及与这些c++流兼容的其他特性。例如,如果你使用Boost图形库构建一个图形对象,你可以很容易地将它的Graphviz表示打印到std::cout流。

另一方面,QTextStream处理Qt对象,特别是QString,这使您不必在std::stringchar*QString之间转换,反之亦然。如果您的项目以qt为中心,或者只使用基于qt的外部库,那么QTextStream很可能会为您节省一些工作。

还要注意,默认情况下,QTextStream通过使用QTextCodec::codecForLocale()来处理不同平台上的一些区域设置和字符编码。相反,std::cout默认使用"C"语言环境,并且在std::string/char*和系统编码之间不进行编码处理。因此,如果您正在开发一个需要编码和语言环境感知的跨平台系统,使用QTextStream可能会有所帮助,因为您需要手动设置std::cout,例如,通过调用imbue()方法来进行这些转换。

(*) -注意std::cin用于从控制台读取。std::cout为标准输出。c++标准库还提供了std::cerr用于错误输出,std::clog用于日志输出。