实现<< for QString是有道理的:
std::ostream& operator <<(std::ostream &stream,const QString &str)
{
stream << str.toAscii().constData(); //or: stream << str.toStdString(); //??
return stream;
}
Run Code Online (Sandbox Code Playgroud)
而不是写作
stream << str.toAscii().constData();
Run Code Online (Sandbox Code Playgroud)
每次都在代码中.
但是,由于它不在标准Qt库中,我假设有任何特殊原因不这样做.如上所述,超载<<的风险/不便是什么?
fja*_*don 10
如果<<
运算符包含在Qt库中,则库的每个客户端都必须使用完全相同的实现.但是由于QString的性质,这是客户想要的并不明显.有些人在西欧编写与遗留文件交互的软件可能想要使用Latin1()字符,美国人可能会使用Ascii(),而更多现代软件可能想要使用Utf8().
在库中实现单个实现会限制整个库可以做到的不可接受的事情.
小智 6
没有必要实现这样的东西,只要存在像这样的方便的解决方案,涉及QTextStream
QString s;
QTextStream out(&s);
out << "Text 1";
out << "Text 2";
out << "And so on....";
Run Code Online (Sandbox Code Playgroud)
QTextStream非常强大......