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 والتشفير والمنصات. أرجو التوضيح، من فضلك.