C++ LPCTSTR 转 std::string报错

代码如下

// CXClientWebSocketCtrl 消息处理程序


VARIANT_BOOL CXClientWebSocketCtrl::Send(LPCTSTR code, LPCTSTR content)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    // TODO: 在此添加调度处理程序代码
    std::string _content = content ;
    std::string _code = code ;
    
    return VARIANT_TRUE;
}

(红字为报错部分)

错误	1	
error C2440: “初始化”: 无法从“LPCTSTR”转换为“std::basic_string<_Elem,_Traits,_Ax>”
e:\workrooms\workroom01\xclient\xclientwebsocket\xclientwebsocket\xclientwebsocketctrl.cpp 206 1 XClientWebSocket

解决方案 :

方案一 : 

我这里参数等都是英文考虑的较少 , 直接改成"使用多字节字符集"

右击项目 -> 属性   弹出如下 :

将字符集改为"使用多字节字符集" , 点击应用

然后代码就不报错了

方案二 : 

如果仍旧想使用"Unicode"字符集 , 修改代码如下

// CXClientWebSocketCtrl 消息处理程序


VARIANT_BOOL CXClientWebSocketCtrl::Send(LPCTSTR code, LPCTSTR content)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    // TODO: 在此添加调度处理程序代码
    std::string _content = LPSTR(content) ;
    std::string _code = LPSTR(code) ;
    
    return VARIANT_TRUE;
}

修改为红字部分 , 然后代码也不报错了

参考 : 

https://www.cnblogs.com/gaohongchen01/p/4006700.html

https://zhidao.baidu.com/question/204573838018157285.html

猜你喜欢

转载自www.cnblogs.com/hi-gdl/p/12343031.html