在c ++中将小写字符更改为大写

时间:2014-03-15 15:32:40

标签: c++ uppercase lowercase toupper

这是我写的代码。当我输入一个小写字符,如'a'时,它给我一个空白字符,但之后它运作良好。你能告诉我我做错了什么吗?谢谢。 :)

#include <iostream>
#include <string>
using namespace std;

int main()
{
    char letter;

    cout << "You will be asked to enter a character.";
    cout << "\nIf it is a lowercase character, it will be converted to uppercase.";
    cout << "\n\nEnter a character. Press . to stop: ";

    cin >> letter;

    if(islower(letter))
    {
        letter = isupper(letter);
        cout << letter;
    }

    while(letter != '.')
    {
        cout << "\n\nEnter a character. Press . to stop: ";
        cin >> letter;

        if(islower(letter))
        {
            letter = toupper(letter);
            cout << letter;
        }
    }

    return 0;
}

6 个答案:

答案 0 :(得分:6)

因为您是第一次打印bool值(即false,又称NUL character)。

你应该改变

letter = isupper(letter);

letter = toupper(letter);

答案 1 :(得分:2)

看这里:

if(islower(letter))
{
    letter = isupper(letter);
    cout << letter;
}

如果字符较低,则为其指定返回值isupper。那应该是0.所以你打印一个空字符。

为什么不为你输入的每个角色拨打toupper?如果它低于它将转换它,如果它已经高,它不会做任何事情。

答案 2 :(得分:0)

如果您想拥有自己的算法:

ace-builds

答案 3 :(得分:0)

通常来说,要将小写字符转换为大写字符,您只需从小写字符中减去32,因为此数字是大写字符和小写字符之间的ASCII码差,例如'a'-'A'=97-67=32

char c = 'b';
c -= 32; // c is now 'B'
printf("c=%c\n", c);

另一种简单的方法是先将小写字符映射到英文字母0-25范围内的偏移量,即'a'为索引'0','z'为索引'25',然后重新映射变成大写字母。

char c = 'b';
c = c - 'a' + 'A'; // c is now 'B'
printf("c=%c\n", c);

答案 4 :(得分:0)

#include <iostream>
using namespace std;

main()
{
    string name ;
    cout<<"Lower Case:  ";
    cin>>name;
    int  size_of_string = name.size(); // to detrmine the looping times
    cout<<"Upper case:  ";

    for(int i = 0 ,n = size_of_string ; i < n ; i++)
    {
        //check if the str[i] is lowercase 
        if(name[i]  >= 'a' && name[i]<='z' )
        {
            //convert the Lowercase to uppercase via ASCI Chart
            char a = name[i] - 32 ;
            cout<<a;
        }

        //the user input was upperCase 
        else
        cout<<name[i];
    }

    cout<<"\n Good Bye!"<<endl;
    return 0;
}

答案 5 :(得分:-1)

letter = isupper(letter);中,检查变量letter是否大写,要将其转换为大写必须使用函数toupper()

letter = toupper(letter);