gpt4 book ai didi

比较 WCHAR String 和 C 中的 Const Char?

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:10 26 4
gpt4 key购买 nike

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

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

谢谢。

最佳答案

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

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

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

您还可以通过项目->设置->配置属性->常规在您的 VC 项目中设置使用 UNICODE 字符集。

关于比较 WCHAR String 和 C 中的 Const Char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com