像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库中,我假设有任何特定原因不这样做。重载 << 操作符会有什么风险/不便之处?
basic_ostream
中使用utf8,在宽basic_ostream
中使用utf16,并从这两者之一正确转换为流的本地化。我不是C++标准库本地化函数的专家,但我会开始查看codecvt和basic_streambuf::getloc,然后进行研究。 - Yakk - Adam Nevraumont