比较C语言中的WCHAR String和Const Char



我用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: %sn"),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与正常字符串?

我发现这些数据类型很令人困惑,我希望通过这个例子更好地理解它们。

谢谢。

更改您的if为"explorer.exe"使用宽字符串

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

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

你也可以在你的VC项目中设置使用UNICODE字符集,通过 project -> settings ->Configuration Properties->General

相关内容

最新更新