Trabajar con string o wstring

Iniciado por SheKeL_C$, 7 Abril 2016, 14:29 PM

0 Miembros y 1 Visitante están viendo este tema.

SheKeL_C$

Estuve en un principio mirando algo de c, y siempre use el tipo char, ahora veo que en c++ tambien existe (sino exite en c) el tipo string.
Tiempo despues veo que tambien hay wchar_t y wstring.

Mi pregunta es clara, si mi objetivo es que mi software trabaje en cualquier Windows, ¿debo de usar string y char, o wstring y wchar_t?

Creo que wstring y wchar_t son para los caracteres 'wide' los que ocupan 2 bytes, por ejemplo los caracteres chinos o el lenguaje cirilico.

Si mi software viene con el tipico "hola, mundo", ¿con que tipo debo de trabajar?
¿Y si estoy esperando alguna entrada de texto por parte del usuario?

ivancea96

Si va a ser un programa de consola, en principio no te compliques y trabaja con la clase string, y con caracteres de 1 byte. No te darán problemas en principio, salvo que trabajes con determinadas funciones de WinAPI, por ejemplo. En ese caso, hasta podrías transformar fácilmente de wstring a string.

En definitiva, para programas de consola, string. En el momento en que necesites realmente trabajar con otras codificaciones, lo sabrás.

SheKeL_C$

Y si por ejemplo trabajase con las APIs que seria mejor trabajar con string o con char?

Cita de: ivancea96 en  7 Abril 2016, 14:36 PMEn el momento en que necesites realmente trabajar con otras codificaciones, lo sabrás.

No me ha quedado claro. Podrias darme algun ejemplo?

ivancea96

Si quisieras en algún momento trabajar con char, o copias a un array, o consigues un array constant con string::c_str().

Por ejemplo las funciones FindFirstFile y FindNextFile rellenan una estructura WIN32_FIND_DATA, donde uno de sus miembros, "cFileName", es TCHAR.
TCHAR es wchar_t si se trabaja con unicode (https://msdn.microsoft.com/es-es/library/windows/desktop/aa365740(v=vs.85).aspx)