首字母大写,其余为小写

0 c++ lowercase capitalize toupper tolower

我一直在搜索和搜索,但没有找到这个问题的答案.我要求用户输入他们的名字,我想自动格式化名称,这样无论他们如何输入名称,它都会显示为大写第一个字母,小写则显示其余部分.例如,如果他们输入"joHN",程序仍然会输出他们的名字"John".

我有他们的名字输入以下代码:

    string name;
    cout << "Please enter your first name: ";
    cin >> name;
Run Code Online (Sandbox Code Playgroud)

我假设我将不得不使用toupper和tolower命令,但我真的不确定如何写一些东西来调整字符串中的每个字符.任何帮助,将不胜感激.

谢谢.

Som*_*ude 5

最简单的解决方案可能是首先将整个单词设为小写,然后将第一个字符设为大写.

C++ 在标准库中有一些不错的算法.对此我建议std::transform一起std::tolower.当然还有std::toupper最后一部分:

std::transform(std::begin(name), std::end(name), std::begin(name), std::tolower);
if (!name.empty())
    name[0] = std::toupper(name[0]);
Run Code Online (Sandbox Code Playgroud)


Man*_*726 5

标准库提供 C 函数std::toupper()std::tolower()返回指定 ASCII 字符的大写/小写。所以你的问题可以通过一个简单的 for 循环来解决:

if( !name.empty() )
{
    name[0] = std::toupper( name[0] );

    for( std::size_t i = 1 ; i < name.length() ; ++i )
        name[i] = std::tolower( name[i] );
}
Run Code Online (Sandbox Code Playgroud)