Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SheKeL_C$ en 7 Abril 2016, 14:29 pm



Título: Trabajar con string o wstring
Publicado por: SheKeL_C$ en 7 Abril 2016, 14:29 pm
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?


Título: Re: Trabajar con string o wstring
Publicado por: ivancea96 en 7 Abril 2016, 14:36 pm
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.


Título: Re: Trabajar con string o wstring
Publicado por: SheKeL_C$ en 7 Abril 2016, 15:52 pm
Y si por ejemplo trabajase con las APIs que seria mejor trabajar con string o con char?

En el momento en que necesites realmente trabajar con otras codificaciones, lo sabrás.

No me ha quedado claro. Podrias darme algun ejemplo?


Título: Re: Trabajar con string o wstring
Publicado por: ivancea96 en 7 Abril 2016, 15:59 pm
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 (https://msdn.microsoft.com/es-es/library/windows/desktop/aa365740(v=vs.85).aspx))