std :: stringをqstringに変換します
質問
私は持っています std::string content
私が知っていることは、UTF-8データが含まれています。私はそれをaに変換したいです QString
. 。 QTでのASSIIからの変換を避けて、どうすればよいですか?
解決
あります QString
呼び出された関数 fromUtf8
それはにかかります const char*
:
QString str = QString::fromUtf8(content.c_str());
他のヒント
QString::fromStdString(content)
より堅牢なので、より良いです。また、その場合にも注意してください std::string
UTF-8でエンコードされている場合、それはまったく同じ結果を与える必要があります QString::fromUtf8(content.data(), int(content.size()))
.
通常、変換を行う最良の方法は、メソッドを使用することです fromutf8, 、しかし、問題は、文字列がロケール依存性を持っている場合です。
これらの場合、使用することが望ましいです fromLocal8bit. 。例:
std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
以来 QT5 frontdstring fromutf8から内部的に使用するため、両方を使用できます。
inline QString QString::fromStdString(const std::string& s)
{
return fromUtf8(s.data(), int(s.size()));
}
所属していません StackOverflow