接受大写和小写命令作为输入的程序

Programs which accept uppercase and lowercase commands as input

我正在尝试在我的程序中添加一个 help/information 框,只要有人输入 /h、/?、/help 命令,它就会弹出。我想确保我的程序接受大写和小写的所有字符。据我所知,我可以检查这些命令的最常见情况,但不是全部(即 /HeLp)。寻找覆盖所有基地的方法。这是我当前的代码:

....
bool CheckParseArguments(LPWSTR* argv, int argc)
{
    for (int i = 0; i <= argc; i++)
    {   
        const wchar_t* help[] = { L"/h", L"/H", L"/?", L"/Help", L"/HELP", L"/help"};
        for (int h = 0; h <= 5; h++)
        if (argc == (i + 1) && wcscmp(argv[i], help[h]) == 0)
        {
            MessageBoxW(NULL, L"Correct input is ...", L"Help", MB_OK);
            return false;
        }        
    }
.... continue with other checks....

如果将每个字母都转换为小写,则只需检查它是否等于“help”。 C++ 有一个 std::tolower 函数可以帮助你。

使用 Microsoft 编译器(您似乎正在使用),您可以使用函数 _wcsicmp 而不是 wcscmp 来执行 case-insensitive 比较。

其他平台也有类似的功能,比如Linux上的strcasecmp and wcscasecmp

ISO C++ 本身不提供执行 case-insensitive 比较的函数。但是,可以在执行比较之前使用函数 std::tolower or std::towlower 将整个字符串转换为小写。之后,您将不需要 case-insensitive 比较,但可以执行标准 case-sensitive 比较。