"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية قراءة ملفات Unicode UTF-8 في Wstrings في Windows باستخدام C++ 11؟

كيفية قراءة ملفات Unicode UTF-8 في Wstrings في Windows باستخدام C++ 11؟

تم النشر بتاريخ 2024-12-21
تصفح:662

How to Read Unicode UTF-8 Files into Wstrings in Windows with C  11?

قراءة ملفات Unicode UTF-8 إلى WStrings في Windows

في مجال برمجة Windows، تكون مهمة استرداد بيانات Unicode (UTF-8) من ملف إلى يمكن إنجاز سلسلة أحرف واسعة (wstring) من خلال الإمكانات المتنوعة التي يوفرها معيار C 11.

الاستفادة من std::codecvt_utf8 Facet

يكمن جوهر هذا الحل في استخدام الواجهة std::codecvt_utf8. يعمل هذا الجانب كجسر بين سلاسل البايت المشفرة UTF-8 وسلاسل الأحرف التي تستخدم تمثيل UCS2 أو UCS4. إنه يحمل مفتاح قراءة وكتابة ملفات UTF-8، بما في ذلك التنسيقات النصية والثنائية.

إنشاء بيئة محلية باستخدام std::locale

لتسخير قوة الواجهة، عادةً ما يتم إنشاء مثيل للكائن المحلي. يقوم هذا الكائن بتغليف المعلومات الخاصة بالثقافة كمجموعة من الجوانب التي تحدد بشكل مشترك بيئة محلية محددة. بمجرد الحصول على المخزن المؤقت للتدفق، يمكن تشريبه بهذه اللغة.

قراءة ملفات UTF-8 باستخدام Codecvt_utf8

من خلال مثال تم إعداده بدقة، نوضح التطبيق العملي لهذا النهج:

#include 
#include 
#include 

std::wstring readFile(const char* filename)
{
    std::wifstream wif(filename);
    wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8));
    std::wstringstream wss;
    wss  

تفتح هذه الوظيفة بأمان ملف UTF-8 المعين، وتقرأ محتوياته في سلسلة نصية، وترجع السلسلة الناتجة.

النهج البديل: إعداد لغة C العالمية

هناك خيار آخر قابل للتطبيق يتضمن تعيين لغة C العامة قبل التعامل مع تدفقات السلسلة. يضمن هذا الأمر أن جميع الاستدعاءات اللاحقة للمنشئ الافتراضي std::locale سوف تنتج نسخًا من لغة C العامة، مما يلغي الحاجة إلى تشرب المخزن المؤقت الصريح للتيار.

std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8));

مع تطبيق هذا التعديل، يمكن قراءة السلاسل النصية بسهولة من ملفات UTF-8:

std::wstring wstr = readFile("a.txt");

الاستنتاج

توفر التقنيات المذكورة أعلاه وسائل قوية وفعالة للتعامل ملفات Unicode (UTF-8) في بيئات Windows، مما يتيح للمطورين التعامل مع سلاسل الأحرف الكبيرة ومعالجتها بشكل فعال.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3