同为const char比较WCHAR字符串使用C?(Compare WCHAR String wi

2019-09-26 04:46发布

我在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的是一个正常的字符串(常量字符*),指针字符数组。

我怎么可以比较szExeFile与普通的字符串?

我觉得这些数据类型相当混乱,我希望这个例子更好地了解他们。

谢谢。

Answer 1:

更改您如果使用宽字符串为"explorer.exe"

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

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

你也可以在你的VC项目设置为使用Unicode字符集,通过项目- >设置- >配置属性- >常规



文章来源: Compare WCHAR String with Const Char in C?
标签: c wchar