【发布时间】:2020-10-10 19:21:49
【问题描述】:
目标是使所有大写字母都打印在字符串中,但是,我必须保留 bool 函数并在我的代码中使用它。我已经解决了过去的一些问题,但遇到了一个阻止我修复它的问题。测试用例是“HEllO”->“HEO”“my”->“”“NAME”->“NAME”“Is”->“I”“AnDeRsON”->“ADRON”。
#include <iostream>
using namespace std;
bool isUpperCase(char ch){
if(ch >= 'A' and ch <= 'Z'){
return true;
}
return false;
}
int main() {
string a = "";
cin >> a;
string c = "";
for(int i = 0; i < a.length(); i++)
{
if (isUpperCase(a[i])) i++;
{
c += a[i];
}
}
cout << c << endl;
}
现在,每当我执行“CHADnigeria”之类的案例时,即使我希望它说“CHAD”,它也会将其变成“HDnigeria”。它还删除了我不想要的大写字母,它应该删除小写字母。 “DancingInTheSky”变成了“ancingnheky”,应该是“DITS”。请注意,bool 函数不能更改。
【问题讨论】:
-
if (isUpperCase(a[i])) i++;这里发生了什么?去掉i++吧? -
^^^^ 丢失该行的尾随
i++;,注意:其中包括分号。 -
相关,顺便说一句,您也不需要临时字符串。只需使用迭代器枚举字符串
a,如果当前字符为大写,则将其(字符)转储到std::cout。 -
@WhozCraig 删除 i++ 已修复,非常感谢!
-
很抱歉破坏了您的辛勤工作,但请看
std::isupper。没有理由重新发明轮子。