Avatar ·

std::wstring vs std::string: ¿cuándo usar Unicode y cadenas multibyte en C++?

¡Hola! Recientemente comencé a aprender C++ y me encontré con el problema de elegir entre std::string y std::wstring. Parece que ambos tipos están diseñados para trabajar con texto, pero no entiendo cuál es la diferencia y cuándo usar cada uno. Aquí hay un ejemplo simple: estoy escribiendo un programa que debe trabajar con caracteres rusos: ```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; // Intento mostrar el carácter por índice std::cout << "Primer carácter string: " << str[0] << std::endl; std::wcout << L"Primer carácter wstring: " << wstr[0] << std::endl; } ``` La salida me confunde: la longitud de std::string resulta ser mayor que la cantidad de caracteres en la cadena, mientras que wstring se comporta de manera diferente. También he oído que hay problemas con Unicode, codificaciones y plataformas. Por favor, aconséjame.