【发布时间】:2021-12-13 17:00:01
【问题描述】:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string sentence ="";
cin >> sentence; //aab
int i;
for (i=0;i=sentence.length();i++){
if (i<=65 && i>=90) {
sentence = sentence[i] + 32;
}
else if (i<=97 && i>=122){ //i=0,
sentence = sentence [i]-32;
}
}
cout << sentence;
return 0;
}
当我输入此代码以更改字母大小写时,尽管代码中只有一个 cin,但它一直要求我输入更多,为什么会发生这种情况?
【问题讨论】:
-
cin >> sentence; //aab是一个错误,如果您希望句子中有空格。这是一个错误,因为该语句将读取到第一个空白字符,而忽略输入的行的其余部分。 -
string sentence ="";= ""部分是不必要的。string sentence;就足够了。 -
不相关,但使用
std::islower/std::isupper和std::tolower/std::toupper而不是幻数。 -
没有数字既是
<=65和>=90,也不是<=97和>=122。你的意思是>= 65、<= 90、>= 97和<= 122。 (你看到std::isupper和std::islower有多大帮助了吗?) -
顺便说一句。在您的
if语句中,您正在检查索引i,而您肯定想在索引i处检查sentence的内容。
标签: c++ loops if-statement uppercase letter