void CommandLineArguments::ParseArguments(int argc, _TCHAR* argv[]) { this->is_help_requested_ = false; std::map<std::string, std::string> args; for (int i = 1; i < argc; ++i) { std::wstring raw_arg(argv[i]); int switch_delimiter_length = GetSwitchDelimiterLength(raw_arg); std::wstring arg = raw_arg.substr(switch_delimiter_length); size_t equal_pos = arg.find(L"="); std::wstring arg_name = L""; std::wstring arg_value = L""; if (equal_pos != std::string::npos && equal_pos > 0) { arg_name = arg.substr(0, equal_pos); arg_value = arg.substr(equal_pos + 1); } else { arg_name = arg.c_str(); } // coerce all argument names to lowercase, making argument names // case-insensitive. std::transform(arg_name.begin(), arg_name.end(), arg_name.begin(), tolower); if (arg_name == L"?" || arg_name == L"h" || arg_name == L"help") { this->is_help_requested_ = true; } this->args_map_[arg_name] = arg_value; } }
void CommandLineArguments::ParseArguments(int argc, _TCHAR* argv[]) { this->is_help_requested_ = false; for (int i = 1; i < argc; ++i) { std::wstring raw_arg(argv[i]); int switch_delimiter_length = GetSwitchDelimiterLength(raw_arg); std::wstring arg = raw_arg.substr(switch_delimiter_length); size_t equal_pos = arg.find(L"="); std::wstring arg_name = L""; std::wstring arg_value = L""; if (equal_pos != std::string::npos && equal_pos > 0) { arg_name = arg.substr(0, equal_pos); arg_value = arg.substr(equal_pos + 1); } else { arg_name = arg; } // coerce all argument names to lowercase, making argument names // case-insensitive. std::transform(arg_name.begin(), arg_name.end(), arg_name.begin(), tolower); // trim single and double quotes from argument value begin and end size_t startpos = arg_value.find_first_not_of(L"'\""); if (startpos != std::string::npos) { arg_value = arg_value.substr(startpos); } size_t endpos = arg_value.find_last_not_of(L"'\""); if (endpos != std::string::npos) { arg_value = arg_value.substr(0, endpos + 1); } if (arg_name == L"?" || arg_name == L"h" || arg_name == L"help") { this->is_help_requested_ = true; } this->args_map_[arg_name] = arg_value; } }