{
string vertexcharacter = "{";
string a = "}";
ofstream myfile;
myfile.open("newfile.txt");
myfile << vertexcharacter, a;
myfile.close();
system("pause");
return 0;
}
最初の文字列は書き込まれますが、2 番目の文字列はテキスト ドキュメントに表示されません
{
string vertexcharacter = "{";
string a = "}";
ofstream myfile;
myfile.open("newfile.txt");
myfile << vertexcharacter, a;
myfile.close();
system("pause");
return 0;
}
最初の文字列は書き込まれますが、2 番目の文字列はテキスト ドキュメントに表示されません
あなたは探しているようです:
myfile << vertexcharacter << a;
現在、コンマ演算子を使用しているため、行は次のようになります。
(myfile << vertexcharacter), a;
これは に挿入vertexcharacter
しmyfile
、結果を破棄してから、a
何もしない を評価します。
このような:
myfile << vertexcharacter << a;
現在持っているもの
myfile << vertexcharacter, a;
最初の引数 ( ) を評価し、結果を破棄してから、2 番目の引数 ( ) を評価するコンマ演算子が含まれます。これは、カンマ演算子の優先順位が最も低いためです。myfile << vertexcharacter
a
それは違いない
myfile << vertexcharacter << a;
簡潔な答え: myfile << vertexcharacter << a;
コンマは、予想とは非常に異なることを行います。コンマはセミコロンのようなものだと考えてください。複数のステートメントをコンマでつなげた場合、各ステートメントは順番に実行されます。しかし、最後のステートメントは、値が「返される」ものです。例えば:
int x = 3;
cout << (x+=2, x+5);
この場合、x+=2
x=5 となるように実行されてからx+5
「返される」ため、値 10 が cout に挿入されます。一方、あなたの例は次と同等です
(myfile << vertexcharacter), a;
基本的にvertexcharacter
は に挿入されmyfile
、結果を何らかの方法で取得するx = (myfile << vertexcharacter, a);
場合は、x=a が得られます。あなたが本当に欲しいのはmyfile << vertexcharacter << a;