تحويل STD :: String إلى QString
سؤال
لقد حصلت على std::string content
التي أعرفها تحتوي على بيانات UTF-8. أريد تحويله إلى أ QString
. كيف أفعل ذلك ، وتجنب تحويل من ASCII في QT؟
المحلول
هناك 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 يستخدم FromStdString داخليًا من FromUTF8 ، حتى تتمكن من استخدام كليهما:
inline QString QString::fromStdString(const std::string& s)
{
return fromUtf8(s.data(), int(s.size()));
}
لا تنتمي إلى StackOverflow