在这个相当简单的练习中,我必须接收用户输入,将所述输入存储到字符串中,通过引用将字符串传递给函数,最后修改字符串,以便toupper()函数“解析”每个字符。 但是,如果用户插入'q'作为输入,程序停止说“再见”或者如果他只按下回车键,程序应该说“嘿,这个字符串是空的”。 现在真正的问题在于最后一部分,因为我的代码不会管理用户只输入Enter Key值的情况(说实话,即使我只是发送一堆空格后跟Enter键,也没有任何反应)
void uppercase(std::string &);
int main(){
using namespace std;
string ex2;
cout << "Exercise 2" <<endl;
while(ex2!="Bye"){
cout << "Enter a string(q to quit): ";
cin >> ex2;
cout << "Was: " << ex2 << endl << "Now is: ";
uppercase(ex2);
}
return 0;
}
void uppercase(std::string &str){
using namespace std;
if(str[0]=='\n')
cout <<"Empty string dude!" << endl;
else{
if(str.length()==1 && str[0]=='q'){ //press 'q' to exit program
str="Bye";
cout << str;
}
else{ //uppercase
for(int i=0;i<str.length();i++){
str[i]=(toupper(str[i]));
}
cout << str <<endl;
}
}
}
我也尝试过compare()函数,甚至将整个字符串与null(无意义,但仍值得一试)和字符串“”进行比较;
答案 0 :(得分:0)
很抱歉您的问题解释不好,尝试
if( (str.length()==1 && str[0]=='q') || str.length() == 0)
{}
可以帮助您解决问题