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.