将WCHAR字符串与C中的Const Char进行比较?

时间:2013-04-02 03:53:56

标签: c wchar

我在C中编写了一个代码,它将使用Process32First()API获取有关该进程的信息。所有信息都存储在此处定义的PROCESSENTRY32结构中:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839%28v=vs.85%29.aspx

pe32是PROCESSENTRY32结构的名称。 进程名称为:pe32.szExeFile

我可以这样打印:

_tprintf(TEXT("Process name: %s\n"),pe32.szExeFile);

现在,我想将进程名称与explorer.exe等特定进程进行比较

这就是我在做的事情:

if(!wcscmp(pe32.szExeFile, _T("explorer.exe"))
{
 perform some action here;
}

它不起作用。

在MS Visual Studio 2008中,PROCESSENTRY32结构的szExeFile成员的数据类型为:WCHAR tagPROCESSENTRY32 :: szExeFile [260]

那么,我认为它是一个宽字符串?

和explorer.exe是一个普通的字符串(const char *),指向一个字符数组的指针。

如何将szExeFile与普通字符串进行比较?

我发现这些数据类型非常混乱,我希望通过这个例子更好地理解它们。

感谢。

1 个答案:

答案 0 :(得分:4)

"explorer.exe"的宽字符串更改为

if(!wcscmp(pe32.szExeFile, L"explorer.exe")

即使用L"explorer.exe"与宽字符串进行比较。

您还可以在VC项目中设置使用UNICODE字符集,通过 Project-> Settings-> Configuration Properties-> General