在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 << 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 ++中将小写字符更改为大写的主要内容,如果未能解决你的问题,请参考以下文章