QTextStream重点编纂

时间:2013-08-25 01:25:14

标签: c++ qt qstring qtextstream

我学习Qt,Qt5.1,我在重音方面遇到了编码问题。我用葡萄牙语编写带有输出的程序,并且总是要使用重音。可以通过以下代码证明该问题:

\#include < QDebug>

\#include < QTextStream>

\#include < QString>

int main(){

  QTextStream out(stdout); 

  qDebug() << "Olá Mundo!"; 

  out << QString("Olá Mundo!") << endl;

  out << "Olá Mundo!" << endl;
}
  • “OláMundo”是葡萄牙语的Hello World。

输出结果为:

OláMundo!

OláMundo!

OláMundo!

第三个“OláMundo”错了。我总是必须使用QString来正确打印输出,还是有一些方法可以使最后一行正确打印(没有Qstring声明)?为什么qDebug会正确显示?

1 个答案:

答案 0 :(得分:1)

您可以将编解码器设置为ISO 8859-1(out.setCodec("ISO 8859-1"))。 然后你可以写out << "Olá Mundo!" << endl;但是out << QString("Olá Mundo!") << endl;将不再起作用。这只是因为QTextStream运算符&lt;&lt;(const char * string)需要ISO 8859-1中的字符串和运算符&lt;&lt;(const QString&amp; string)UTF-8中的QString。 QTextStream的默认编解码器是UTF-8。

qDebug将字符串内部转换为UTF-8。这就是你可以写qDebug() << "Olá Mundo!";

的原因