接受大写和小写命令作为输入的程序
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 比较。
我正在尝试在我的程序中添加一个 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 比较。