C++ Unicode字符串visual c++;建造师
因此,我正在使用Visual Studio 2012,项目设置设置为“使用unicode” 我的文件中包含以下内容:C++ Unicode字符串visual c++;建造师,c++,visual-studio-2012,unicode,C++,Visual Studio 2012,Unicode,因此,我正在使用Visual Studio 2012,项目设置设置为“使用unicode” 我的文件中包含以下内容: #include <string> using namespace std; Visual studio抛出错误C2665 我做错了什么 我做错了什么 当项目设置为“使用unicode”时,process.szExeFile字段的类型为WCHAR[]。std::string类不提供接受WCHAR[](或WCHAR\u t*)作为输入的构造函数 您将名称变量作为非Un
#include <string>
using namespace std;
Visual studio抛出错误C2665
我做错了什么
我做错了什么
当项目设置为“使用unicode”时,process.szExeFile
字段的类型为WCHAR[]
。std::string
类不提供接受WCHAR[]
(或WCHAR\u t*
)作为输入的构造函数
您将名称
变量作为非Unicode字符串进行比较,因此我假设您不关心非ASCII字符。如果这是真的,您可以这样做:
std::wstring exeStr(process.szExeFile);
std::string exeStrA(exeStr.begin(), exeStr.end());
if (exeStrA == string(name))
如果您关心非ASCII字符,则应使用另一种方法,将名称
字符串转换为Unicode,例如使用wsctombs()
(您可以在此处找到示例:)
我做错了什么
当项目设置为“使用unicode”时,process.szExeFile
字段的类型为WCHAR[]
。std::string
类不提供接受WCHAR[]
(或WCHAR\u t*
)作为输入的构造函数
您将名称
变量作为非Unicode字符串进行比较,因此我假设您不关心非ASCII字符。如果这是真的,您可以这样做:
std::wstring exeStr(process.szExeFile);
std::string exeStrA(exeStr.begin(), exeStr.end());
if (exeStrA == string(name))
如果您关心非ASCII字符,那么您应该用另一种方法,将
名称
字符串转换为Unicode,例如使用wsctombs()
(您可以在这里找到一个示例:).实际的错误文本是什么?错误C2665:std::basic_string::basic_string:17个重载中没有一个可以转换参数PCSTR@BerNardEr:这是因为PCSTR
与WCHAR[]
无关。您需要了解Windows中8位字符和16位字符之间的差异。实际错误文本是什么?错误C2665:std::basic_字符串::basic_字符串:17个重载中没有一个可以转换parameterstrywstring(process.szExeFile)
表示无法执行操作std::wstring==PCSTR@BerNardEr:这是因为PCSTR
与WCHAR[]
无关。你需要理解Windows中8位字符和16位字符之间的区别。谢谢,我真的没有想过。谢谢,我真的没有想过。