【问题标题】:Compare WCHAR String with Const Char in C?比较WCHAR字符串和C中的Const Char?
【发布时间】:2013-03-23 06:07:30
【问题描述】:

我用 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 与普通字符串进行比较?

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

谢谢。

【问题讨论】:

    标签: c wchar


    【解决方案1】:

    更改您的 if 以将宽字符串用于 "explorer.exe" as

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 2012-05-03
      • 2021-12-06
      相关资源
      最近更新 更多