实现<<对于QString来说:
std::ostream& operator <<(std::ostream &stream,const QString &str) { stream << str.toAscii().constData(); //or: stream << str.toStdString(); //?? return stream; }
而不是写作
stream << str.toAscii().constData();
每次在代码中.
然而,由于它不在标准的Qt库中,我假定有任何特殊原因不这样做.重载的风险/不便是什么?如上所述?
解决方法
如果<操作符被包含在Qt库中,库的每个客户端都必须使用完全相同的实现.但是由于QString的本质,这远远不是这些客户想要的.有些写西班牙传统文件软件的人可能想使用Latin1()字符,美国人可能会用Ascii()和更多的现代软件可能想使用Utf8(). 在图书馆中进行单一的实施将会限制整个图书馆可以做的事情.