Ich lerne gerade Programmierung in C++. In meinen Hausaufgaben muss ich drei Strings vergleichen, die der Benutzer durch eine Eingabeaufforderung erhält. Ich weiß, dass für eine Funktion, um bestimmte Werte direkt zu ändern, anstatt einen Wert zurückzugeben, ich Zeiger verwenden muss. Ich weiß auch, dass Strings sich bereits wie Zeiger verhalten. Das ist mein Code so weit, aber ich weiß nicht, wo ich falsch:wie man einen String durch eine Funktion übergeben C++
#include"std_lib_facilities.h"
void switching (string x, string y){
string flag;
if (x>y){flag=y;
y=x;
x=flag;
}
}
int main(){
string s1, s2, s3;
cout<<"introduce three words: ";
cin>>s1>>s2>>s3;
switching(s1,s2);
cout<<s1<<" "<<s2<<" "<<s3;
cout<<endl;
switching(s2,s3);
cout<<s1<<" "<<s2<<" "<<s3;
cout<<endl;
switching(s1,s2);
cout<<s1<<" "<<s2<<" "<<s3;
cout<<endl;
return 0;
}
Sie müssen Pass-by-reference, dh 'Leere Schalt (string & x, string & y) {' – songyuanyao
"Strings verhalten sich schon wie Zeiger" - was? – aschepler
'std :: string' * enthält * einen Zeiger, ist aber selbst kein Zeiger. 'string x' ist eine Instanz, kein Zeiger auf eine Instanz. 'string * x' ist ein Zeiger auf eine Instanz. –