1

下面解决了。

原始问题:如何使与 argv[] 的比较不区分大小写?这是一个代码片段:

if (std::string(argv[2]) == "HKCU") //Si escriben HKCU
{
    cout << "Has escrito HKCU" << endl;
}
else //Si no escriben la clave
{
    cout << "Debes especificar HCKU o HKLM" << endl;
}

如果我通过参数“hkcu”测试不起作用,我必须输入“HKCU”。如果我在程序中比较“HKCU”或“hkcu”,任何一个字符串都可以。

编辑:我不得不以这种方式使用 _stricmp(使用 VS2013):

if (_stricmp(argv[2], "HKCU") == 0)
4

3 回答 3

3

如果boost是一个选项,那么您可以使用iequals

if (boost::iequals(std::string(argv[2]), "HKCU")) {
  ...
}

另一种选择是只使用strcasecmp

if (0 == strcasecmp(argv[2], "HKCU")) { 
  ...
}
于 2013-08-13T21:05:25.260 回答
3

你需要重新考虑你的问题。您不希望“字符串”不区分大小写,而是希望通过比较来意识到 HKCU 与 Hkcu 或 hKcU 相同。

为此,有许多选项,其中之一是已经提到的 function stricmp。原型是:

#include <string.h>
int stricmp(const char *string1, const char *string2);

意思是,你会像这样使用它:

if(stricmp(argv[2], "HKCU") == 0) {
}

另一种选择是strcasecmp类似操作的功能。

希望这可以帮助。

于 2013-08-13T21:07:34.537 回答
2

C/C++ 程序中的 argv[] 只是一个由 shell 传入的字符串。您必须将程序中的比较更改为不区分大小写。

于 2013-08-13T21:05:54.583 回答