std::string content
私が知っているのはUTF-8データを含んでいます。 QString
に変換したい。 Qtのfrom-ASCII変換を回避して、どうすればよいですか?
fromUtf8
をとる const char*
というQString
関数があります。
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 fromStdStringは内部でfromUtf8を使用するため、両方を使用できます。
inline QString QString::fromStdString(const std::string& s)
{
return fromUtf8(s.data(), int(s.size()));
}