如何接受不区分大小写的输入?

时间:2013-10-09 16:04:32

标签: c++

您如何接受不区分大小写并允许在用户输入中嵌入空格?因此,用户可以输入“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?    
}

3 个答案:

答案 0 :(得分:4)

您可以使用循环将整个字符串一次转换为大写一个字符,但更好的解决方案是使用C ++标准库的transform函数:

std::string hk = "hong konG";
std::transform(hk.begin(), hk.end(), hk.begin(), ::toupper);

这会将::toupper应用于字符串的所有字符,从而生成一个读取"HONG KONG"的字符串。

Demo on ideone.

答案 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的另一个建议也是一个非常好的解决方案。