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

Posted

技术标签:

【中文标题】在c ++中将小写字符更改为大写【英文标题】:Changing a lowercase character to uppercase in c++ 【发布时间】:2014-04-20 23:21:55 【问题描述】:

这是我写的代码。当我输入诸如“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;

【问题讨论】:

因为你第一次打印一个bool值。 您希望这能做什么? letter = isupper(letter); cout &lt;&lt; letter;isupper 可以返回什么,在 ASCII 中对应什么? 你能告诉我应该如何修改我的代码吗? 谢谢大家,这是我犯的一个愚蠢的错误。我以为我将两个部分的 isupper() 修改为 toupper() 。哈哈谢谢。 :) 【参考方案1】:

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

你应该改变

letter = isupper(letter);

letter = toupper(letter);

【讨论】:

【参考方案2】:

看这里:

if(islower(letter))

    letter = isupper(letter);
    cout << letter;

如果字符较小,则您为其分配了返回值isupper。那应该是 0。所以你打印一个空字符。

您为什么不为您输入的每个字符调用toupper?如果它低于它会转换它,如果它已经高于它不会做任何事情。

【讨论】:

哦,哇,我没想到那样大声笑。谢谢大家。 :)【参考方案3】:

一般来说,将小写字符转换为大写字符,只需将小写字符减去 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】:

如果您想要自己的算法:

#include<iostream>
#include<string>

using namespace std;

int main()

    char ch = '/0';
    string input("Hello, How Are You ?");
    for(size_t i=0; i<input.length(); i++)
    
        if(input[i]>=97 && input[i]<=122)
        
            ch=input[i]-32;
        
        else
        
            ch = input[i];
        
        cout << ch;
    

  return 0;

【讨论】:

【参考方案5】:

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

letter = toupper(letter);

【讨论】:

你的答案比其他答案有什么价值?【参考方案6】:
#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;

【讨论】:

以上是关于在c ++中将小写字符更改为大写的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Java在Spark中将数据库的列名更改为大写

在vim中将一对括号更改为括号的最快方法

在 Tedit Delphi 中更改字符

如何在 Pyspark 中将字符串更改为时间戳?

在 Eclipse CDT 中将项目类型从“可执行”更改为“静态库”

在 Pyspark 中将列类型从字符串更改为日期