Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Unicode字符串visual c++;建造师_C++_Visual Studio 2012_Unicode - Fatal编程技术网

C++ Unicode字符串visual c++;建造师

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

因此,我正在使用Visual Studio 2012,项目设置设置为“使用unicode”

我的文件中包含以下内容:

#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个重载中没有一个可以转换parameterstry
wstring(process.szExeFile)
表示无法执行操作std::wstring==PCSTR@BerNardEr:这是因为
PCSTR
WCHAR[]
无关。你需要理解Windows中8位字符和16位字符之间的区别。谢谢,我真的没有想过。谢谢,我真的没有想过。