您如何接受不区分大小写并允许在用户输入中嵌入空格?因此,用户可以输入“hong konG”并获得与输入的正确匹配。
我只有input[0] = toupper(input[0]);
只有在区分大小写时才会接受。
while(true){
cout << "Enter a city by name: "<< " ";
std::getline (std::cin,input);
if (input == "quit")
{
break;
}
input[0] = toupper (input[0]);
//....how do I loop to find all letter's in the input string variable?
}
答案 0 :(得分:4)
您可以使用循环将整个字符串一次转换为大写一个字符,但更好的解决方案是使用C ++标准库的transform
函数:
std::string hk = "hong konG";
std::transform(hk.begin(), hk.end(), hk.begin(), ::toupper);
这会将::toupper
应用于字符串的所有字符,从而生成一个读取"HONG KONG"
的字符串。
答案 1 :(得分:2)
for (auto& c : str)
c = std::toupper(c)
答案 2 :(得分:0)
您可以像这样将整个字符串转换为大写
for (size_t i = 0; i < input.size(); ++i)
input[i] = toupper (input[i]);
使用std::transform
的另一个建议也是一个非常好的解决方案。