Unicode 字符串可视化 C++ 构造函数

Unicode string visual c++ constructor

因此,我使用的是 Visual Studio 2012,项目设置设置为 "use unicode"。

我已将其包含在我的文件中:

#include <string>
using namespace std;

当我尝试这样做时

 //process.szExeFile - WCHAR[260]
 //name - PCSTR
if (string(process.szExeFile) == string(name))

Visual studio 引发错误 C2665。

我做错了什么?

What am I doing wrong?

当项目设置为 "use unicode" 时,process.szExeFile 字段的类型为 WCHAR[]std::string class 不提供接受 WCHAR[](或 wchar_t*)作为输入的构造函数。

您将 name 变量作为非 Unicode 字符串进行比较,因此我假设您不关心非 ASCII 字符。如果是这样,您可以这样做:

std::wstring exeStr(process.szExeFile);
std::string exeStrA(exeStr.begin(), exeStr.end());
if (exeStrA == string(name))

如果您关心非 ASCII 字符,则应该反过来,将 name 字符串转换为 Unicode,例如使用 wsctombs()(您可以在此处找到示例: How do I convert a string to a wstring using the value of the string?).