文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在Qt程序中使用C++标准库输出流可能遇到的问题

在Qt程序中使用C++标准库输出流可能遇到的问题

时间:2010-03-28  来源:tyc611

今天在写代码时,遇到了一个奇怪的问题。分析发现,此类似问题很容易引起难以发现的Bug,特分享于大家。

问题代码简化如下:

typedef std::wostream OStreamType;
#include <QtCore/QtCore>

...
OStreamType os;
...
os << endl;  // (1)
...

在上面的代码中,(1)处的代码并不会按预期调用std::endl(os),而是调用了std::wostream::operator<<(const void *)函数,此时函数参数为<QtCore/QTextStream>中的endl。如果把(1)处的代码改为“os << std::endl”,那么其结果将是我们所期望的。

因此,在Qt程序中使用标准C++库中的输出流时需要注意这个问题,其可能会导致难以察觉的Bug。
此外,这个问题同样存在于<QtCore/QTextStream/QTextStream>中定义的其它类似IO Manipulator,比如hex,fixed等等。

避免方法:在使用了标准库的源文件中加上using namespace std指令,或者使用限制名(如std::endl)。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载