将“Enter Key”值分配给字符串[C ++]

时间:2017-02-07 00:25:55

标签: c++ string

在这个相当简单的练习中,我必须接收用户输入,将所述输入存储到字符串中,通过引用将字符串传递给函数,最后修改字符串,以便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(无意义,但仍值得一试)和字符串“”进行比较;

1 个答案:

答案 0 :(得分:0)

很抱歉您的问题解释不好,尝试

if( (str.length()==1 && str[0]=='q') || str.length() == 0)
{}

可以帮助您解决问题