2017-02-07 3 views
0

In dieser eher einfachen Übung muss ich eine Benutzereingabe erhalten, die Eingabe in eine Zeichenkette speichern, die Zeichenkette per Referenz an eine Funktion übergeben und die Zeichenkette schließlich ändern dass jedes Zeichen von der toupper() -Funktion "geparst" wird. Wenn der Benutzer jedoch 'q' als Eingabe eingibt, hört das Programm auf, "Bye" zu sagen ODER wenn er nur die Eingabetaste drückt, sollte das Programm etwas wie "Hey, diese Zeichenfolge ist leer" sagen. Jetzt ist das wirkliche Problem hier im letzten Teil, da mein Code den Fall nicht handhabt, in dem der Benutzer nur den Enter Key eingibt (um ehrlich zu sein, selbst wenn ich nur ein paar Leerzeichen gefolgt von der Enter-Taste nichts schreibe) geschiehtDen "Enter Key" -Wert einer Zeichenkette zuweisen [C++]

)
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; 
      } 
     } 
} 

ich habe auch versucht die Funktion compare() und sogar die gesamte Zeichenfolge auf null (sinnlos, aber immer noch einen Versuch wert) und die Zeichenkette „“ zu vergleichen;

+3

einfach für eine leere Zeichenfolge überprüfen helfen eingegeben: 'if (str.empty())' –

+2

'cin >> ex2' kann nicht angezeigt werden. Es ist Leerzeichen und verworfen. Schauen Sie in 'std :: getline' – user4581301

+0

@ user4581301 Sie haben das richtig verstanden. Ich habe getline (cin, ex2) benutzt und die if-Anweisung in if (str [0] == '\ 0') geändert und jetzt funktioniert es! – kn0bbulo

Antwort

0

Sorry für die schlechte Interpretation des Problems, versuchen

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

Kann man aus dem Problem

+1

* "ex2! =" Tschüss ", versucht tatsächlich Referenzen zu vergleichen," * Nein , und 'strcmp (ex2," Bye ")' wird nicht kompiliert. –

+0

Nach 3 richtigen Posts konnte ich keine einzige Stimme mehr bekommen, und ich schätze einfach, dass die Leute hier lieber falsche Antworten sehen als die richtigen, danke für deinen Kommentar, seit ich mit c/C++ gespielt habe – ShayHaned

+0

Dieser Teil funktioniert. Wie gesagt, der einzige Teil, der nicht funktioniert, ist die Zeile "Leerer String". – kn0bbulo

Verwandte Themen