私はC++でプログラミングを学んでいます。私の宿題では、ユーザーが指定した3つの文字列をプロンプトで比較する必要があります。値を返す代わりに特定の値を直接変更する関数では、ポインタを使用する必要があることはわかっています。また、文字列はすでにポインタのように振る舞います。これは、これまでの私のコードですが、私が間違っているところわからない。:文字列を関数に渡す方法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;
}
あなたが参照渡し必要がある、すなわち '無効切り替え(文字列&X、文字列&Y){' – songyuanyao
「文字列は、すでにポインタのように振る舞う」 - 何? – aschepler
'std :: string' *にはポインタが含まれていますが、それ自身はポインタではありません。 'string x'はインスタンスであり、インスタンスへのポインタではありません。 'string * x'はインスタンスへのポインタです。 –