{
string vertexcharacter = "{";
string a = "}";
ofstream myfile;
myfile.open("newfile.txt");
myfile << vertexcharacter, a;
myfile.close();
system("pause");
return 0;
}
第一个字符串已写入,但第二个字符串未显示在文本文档中
{
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
执行 x=5,然后x+5
“返回”,因此将值 10 插入 cout。另一方面,您的示例等效于
(myfile << vertexcharacter), a;
基本上,vertexcharacter
插入到myfile
中,然后,如果你以某种方式捕获结果,x = (myfile << vertexcharacter, a);
那么你会得到 x=a。你真正想要的是myfile << vertexcharacter << a;
一定是
myfile << vertexcharacter << a;