سؤال

لقد حصلت على 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()));
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top