将状态输入转换为缩写 我正在研究一个个人C++项目,其中一个特性是保存联系信息。说到地址,我希望州政府以缩写形式保存
我正在研究一种方法,该方法将接受州全名的字符串输入,并返回2个字符的州缩写字符串值。话虽如此,我一直在与一些朋友进行头脑风暴,探讨最好的方法。到目前为止,我已经完成了以“A”开头的状态;但在我浏览其他47个州之前,我想通过问这个问题来扩大我的头脑风暴。是否有“更好”或更有效的方法来实现这一点?到目前为止,请看我的函数将状态输入转换为缩写 我正在研究一个个人C++项目,其中一个特性是保存联系信息。说到地址,我希望州政府以缩写形式保存,c++,string,user-input,input-sanitization,C++,String,User Input,Input Sanitization,我正在研究一种方法,该方法将接受州全名的字符串输入,并返回2个字符的州缩写字符串值。话虽如此,我一直在与一些朋友进行头脑风暴,探讨最好的方法。到目前为止,我已经完成了以“A”开头的状态;但在我浏览其他47个州之前,我想通过问这个问题来扩大我的头脑风暴。是否有“更好”或更有效的方法来实现这一点?到目前为止,请看我的函数 std::string Address::formatStateInput(std::string stateInput){ char firstLette
std::string Address::formatStateInput(std::string stateInput){
char firstLetter = toupper(stateInput.at(0)); //makes first character capital for easy checking
if(firstLetter == 'A'){
char letterToCheck = toupper(stateInput.at(3)); //makes fourth character capital for easy checking
//Alabama
if (letterToCheck == 'B'){
return "AL";
}
//Alaska
else if (letterToCheck == 'S'){
return "AK";
}
//Arizona
else if (letterToCheck == 'Z'){
return "AZ";
}
else{
return "NULL";
}
}
else{return "NULL";}
}
我会使用一个
std::map
(或者std::unordered_map
)
请注意,在典型的情况下,您可能不想将所有州名称和缩写硬编码到源代码中。您可能希望在外部配置文件中包含名称和缩写。我将使用
std::map
(或std::unordered\u map
)
请注意,在典型的情况下,您可能不想将所有州名称和缩写硬编码到源代码中。您可能希望在外部配置文件中包含名称和缩写。我将使用
std::map
(或std::unordered\u map
)
请注意,在典型的情况下,您可能不想将所有州名称和缩写硬编码到源代码中。您可能希望在外部配置文件中包含名称和缩写。我将使用
std::map
(或std::unordered\u map
)
请注意,在典型的情况下,您可能不想将所有州名称和缩写硬编码到源代码中。您可能希望在外部配置文件中包含名称和缩写。给我们一个传递给该方法的字符串示例。将传递给该方法的字符串将是50个美国(还不足以接受所有国家)之一的名称,例如“阿拉巴马”。请给我们一个您传递给该方法的字符串的示例。将通过该方法的字符串将是50个美国(还不足以接受所有国家)之一的名称,例如“阿拉巴马州”。请给我们一个您传递给该方法的字符串的示例。将通过该方法的字符串将是50个美国(还不足以接受所有国家)之一的名称,例如“阿拉巴马州”。请给我们一个您传递给该方法的字符串的示例。将通过该方法的字符串将是50个美国(还不足以接受所有国家)之一的名称,例如“阿拉巴马州”。使用此解决方案,输入必须完全格式化,第一个字母大写,其余字符小写。@Juken:是的--您通常希望单独处理(例如,选择所有小写可能更容易)True。我想如果我以后还需要全州名的话,这也会派上用场。问题是它不能处理拼写错误和打字错误。op的方法可以通过这样一种方式进行编码,以最大限度地减少这种情况。使用这种解决方案,输入必须完全格式化,第一个字母大写,其余字符小写。@Juken:是的--您通常希望单独处理(例如,选择所有小写可能更容易)True。我想如果我以后还需要全州名的话,这也会派上用场。问题是它不能处理拼写错误和打字错误。op的方法可以通过这样一种方式进行编码,以最大限度地减少这种情况。使用这种解决方案,输入必须完全格式化,第一个字母大写,其余字符小写。@Juken:是的--您通常希望单独处理(例如,选择所有小写可能更容易)True。我想如果我以后还需要全州名的话,这也会派上用场。问题是它不能处理拼写错误和打字错误。op的方法可以通过这样一种方式进行编码,以最大限度地减少这种情况。使用这种解决方案,输入必须完全格式化,第一个字母大写,其余字符小写。@Juken:是的--您通常希望单独处理(例如,选择所有小写可能更容易)True。我想如果我以后还需要全州名的话,这也会派上用场。问题是它不能处理拼写错误和打字错误。op的方法可以用这样一种方式编码,以尽量减少这种情况
std::map<std::string, std::string> abbrs;
abbrs["Alabama"] = "AL";
abbrs["Alaska"] = "AK";
abbrs["Arizona"] = "AZ";
// ...
auto pos = abbrs.find(user_input_state_name);
if (pos == abbrs.end())
error_invalid_state_name(user_input_state_name);
else
abbreviation = *pos;