两种方式:
1、window平台上,使用方法–MultiByteToWideChar:
int nWLen = ::MultiByteToWideChar(CP_ACP, NULL, p_obj.c_str(), int(p_obj.size()), NULL, 0);
wchar_t* pWszString = new wchar_t[nWLen + 1];//一定要加1,不然会出现尾巴
::MultiByteToWideChar(CP_ACP, NULL, p_obj.c_str(), int(p_obj.size()), pWszString, nWLen);
pWszString[nWLen] = '\0';
2、通用版(windows&Unix),使用方法–mbstowcs:
setlocale(LC_CTYPE, "chs");//linux下,这句代码请改为setlocale(LC_CTYPE, "en_US.utf8");
int nWLen = std::mbstowcs(NULL, p_obj.data(), NULL);
wchar_t *pWstr = new wchar_t[nWLen + 1];
int nLen = std::mbstowcs(pWstr, p_obj.data(), p_obj.size());
注意:
1、我的环境是python2.7.11 32bit+vs15
2、C++调用python脚本程序,设置py程序路径(PyRun_SimpleString(“sys.path.append(‘./’)”)),建议设置为绝对路径,这里我设置了./当前路径,这个路径指的是c++编译后的bin目录即可执行程序的那个路径,同时这个时候C++可执行程序调用py程序,c++可执行程序一定要在bin目录下执行
ps:windows多版本pip切换窍门:
1、cd d:\pythonXX\Scripts
2、easy_install.exe pip
3、python -m pip install -U pip