{
string vertexcharacter = "{";
string a = "}";ofstream myfile;
myfile.open("newfile.txt");
myfile << vertexcharacter, a;
myfile.close();
system("pause");
return 0;
}
первая строка записана, но вторая строка не отображается в текстовом документе
Вы, кажется, ищете:
myfile << vertexcharacter << a;
В настоящее время вы используете оператор запятой, поэтому ваша строка эквивалентна:
(myfile << vertexcharacter), a;
Это вставки vertexcharacter
в myfile
, отбрасывает результат, затем оценивает a
который ничего не делает.
Как это:
myfile << vertexcharacter << a;
Что у вас есть
myfile << vertexcharacter, a;
включает в себя оператор запятой, который оценивает первый аргумент (myfile << vertexcharacter
), отбрасывает результат, затем оценивает второй аргумент (a
). Причина этого заключается в том, что оператор запятой имеет самый низкий приоритет.
Короткий ответ: myfile << vertexcharacter << a;
Запятая делает что-то совсем другое, чем вы ожидаете. Думайте о запятой, как точка с запятой. Если у вас есть несколько операторов, соединенных запятыми, каждый оператор будет выполняться по порядку. Но последнее утверждение — это то, чье значение «возвращается». Например:
int x = 3;
cout << (x+=2, x+5);
В этом случае, x+=2
выполняется так, что х = 5, а затем x+5
«возвращается», поэтому значение 10 вставляется в cout. Ваш пример, с другой стороны, эквивалентен
(myfile << vertexcharacter), a;
В принципе, vertexcharacter
вставляется в myfile
и затем, если вы как-то захватывали результат, как x = (myfile << vertexcharacter, a);
тогда вы получите х = а. То, что вы действительно хотите, это myfile << vertexcharacter << a;
Это должно быть
myfile << vertexcharacter << a;