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;
einfach für eine leere Zeichenfolge überprüfen helfen eingegeben: 'if (str.empty())' –
'cin >> ex2' kann nicht angezeigt werden. Es ist Leerzeichen und verworfen. Schauen Sie in 'std :: getline' – user4581301
@ 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