none
VC2008 MFC SOCKET网络程序,“inet_addr”: 不能将参数 1 从“wchar_t *”转换为“const char *” RRS feed

  • 问题

  • VC2008中默认编码为UNICODE,MFC SOCKET网络程序

    addr.sin_addr.S_un.S_addr=inet_addr(str.GetBuffer(1));

    “inet_addr”: 不能将参数 1 从“wchar_t *”转换为“const char *”

    错在哪?不想修改默认编码UNICODE为多字节。

    2014年7月15日 4:07

答案

  • 那您需要先将字符串从Unicode编码的转成Multiple Byte编码的。
    WideCharToMultiByte();
    例如:
    char* pBuf = NULL;
    int nLen = WideCharToMultiByte(CP_ACP, 0, str, -1, pBuf, 0, NULL, NULL);
    pBuf = new char[nLen];
    WideCharToMultiByte(CP_ACP, 0, str, -1, pBuf, nLen, NULL, NULL);
    addr.sin_addr.S_un.S_addr=inet_addr(pBuf);
    //.....
    // 最后不需要的时候将其释放
    delete[] pBuf;
    pBuf = NULL;


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年7月16日 1:55
    版主