Avatar ·

std::wstring против std::string: متى تستخدم Unicode والسلاسل متعددة البايت في C++؟

مرحبًا! لقد بدأت مؤخرًا في تعلم لغة C++ وواجهت مشكلة في الاختيار بين std::string و std::wstring. يبدو أن كلا النوعين مخصصان للعمل مع النصوص، لكنني لا أفهم الفرق ومتى يجب استخدام كل منهما. إليك مثال بسيط: أكتب برنامجًا يجب أن يعمل مع الأحرف الروسية: ```cpp #include #include int main() { std::string str = "Привет, мир!"; std::wstring wstr = L"Привет, мир!"; std::cout << "string length: " << str.length() << std::endl; std::wcout << L"wstring length: " << wstr.length() << std::endl; // أحاول طباعة حرف حسب الفهرس std::cout << "Первый символ string: " << str[0] << std::endl; std::wcout << L"Первый символ wstring: " << wstr[0] << std::endl; } ``` الناتج يحيرني: طول std::string أكبر من عدد الأحرف في السلسلة، بينما يتصرف wstring بشكل مختلف. كما سمعت أن هناك مشاكل مع Unicode والتشفير والمنصات. أرجو التوضيح، من فضلك.