wchar_t convert c++ char wchar

c++ - convert - char to wchar



No se puede convertir ''const char*'' en ''WCHAR*'' en el argumento que pasa (2)

Para los literales, quiere usar L en la cadena como en:

L"My String"

Si puede compilar en caracteres anchos o no, entonces puede considerar usar la macro _T() lugar:

_T("My String")

Los caracteres de cadena ancha en MS-Windows usan el formato UTF-16. Para obtener más información sobre los formatos Unicode, consulte el sitio web de Unicode .

Para convertir dinámicamente una cadena, necesita conocer el formato de su cadena char * . En la mayoría de los casos, en Windows es un Win1252, pero definitivamente no siempre. Microsoft Windows admite muchos formatos de 8 bits, incluidos UTF-8 e ISO-8859-1.

Si confía en la configuración regional, puede usar las funciones mbstowc_s() .

Para otras conversiones, es posible que desee ver la función MultiByteToWideChar()

Tengo documentación en la que está escrito que el nombre de usuario, IP y contraseña deben ser const char* y cuando estoy poniendo varaibles en const char , obtengo este mensaje de error.

Este es mi código:

#include <cstdlib> #include <iostream> #include <stdio.h> #include <windows.h> using namespace std; typedef int (__cdecl *MYPROC)(LPWSTR); int main() { HINSTANCE hinstDLL; MYPROC ProcAdd; hinstDLL = LoadLibrary("LmServerAPI.dll"); if(hinstDLL != NULL){ ProcAdd = (MYPROC) GetProcAddress(hinstDLL,"LmServer_Login"); if(ProcAdd != NULL){ const char* IP = "xxx.177.xxx.23"; const char* name = "username"; const char* pass = "password"; int port = 888; ProcAdd(IP,port,name,pass); system ("pause"); } } }

Y obtuve este error:

no puede convertir const char*'' to WCHAR *'' en el argumento que pasa

¿Qué tipo de variable debo usar para esos argumentos y cómo?


Probablemente esté utilizando uno de los compiladores de Visual Studio, donde en la Project Settings , hay una opción de Character set . Escoge de:

  • Conjunto de caracteres Unicode (UTF-16), predeterminado
  • Conjunto de caracteres de múltiples bytes (UTF-8)
  • No establecido

Las funciones de llamada que aceptan cadenas en la configuración Unicode requieren que hagas literales de cadena Unicode:

"hello"

Es de tipo const char* , mientras que:

L"hello"

es de tipo const wchar_t* . Por lo tanto, cambie su configuración a Not set o cambie sus literales de cadena a los más anchos.