Saltar al contenido

convertir std :: wstring a const * char en c ++

Solución:

Puede convertir un std::wstring a un const wchar_t * utilizando el c_str función miembro:

std::wstring wStr;
const wchar_t *str = wStr.c_str();

Sin embargo, una conversión a un const char * no es natural: requiere una llamada adicional para std::wcstombs, como por ejemplo:

#include <cstdlib>

// ...

std::wstring wStr;
const wchar_t *input = wStr.c_str();

// Count required buffer size (plus one for null-terminator).
size_t size = (wcslen(input) + 1) * sizeof(wchar_t);
char *buffer = new char[size];

#ifdef __STDC_LIB_EXT1__
    // wcstombs_s is only guaranteed to be available if __STDC_LIB_EXT1__ is defined
    size_t convertedSize;
    std::wcstombs_s(&convertedSize, buffer, size, input, size);
#else
    std::wcstombs(buffer, input, size);
#endif

/* Use the string stored in "buffer" variable */

// Free allocated memory:
delete buffer;

No puedes hacer esto así. std::wstring representa una cadena de caracteres anchos (Unicode), mientras que char* en este caso es una cadena de caracteres ASCII. Tiene que haber una conversión de página de códigos de Unicode a ASCII.

Para realizar la conversión, puede utilizar funciones de biblioteca estándar como wcstombs, o Windows ‘ WideCharToMultiByte función.

Actualizado para incorporar información de comentarios, gracias por señalarlo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *