2013-03-22 24 views
0
{ 
    string vertexcharacter = "{"; 
    string a = "}"; 



ofstream myfile; 
myfile.open("newfile.txt"); 
myfile << vertexcharacter, a; 
myfile.close(); 

system("pause"); 
return 0; 

}怎么写两个字符串,以C++中的文件

第一个字符串写入,但第二个字符串不以文本文档

+3

逗号运算罢工。打开警报级别,您可能会收到警告。 – chris 2013-03-22 19:59:25

回答

4

你似乎是在寻找显示:

myfile << vertexcharacter << a; 

目前,您正在使用逗号操作符,所以你的行等同于:

(myfile << vertexcharacter), a; 

这会将vertexcharacter插入到myfile中,丢弃结果,然后评估a,它不执行任何操作。

3

像这样:

myfile << vertexcharacter << a; 

你现在有什么

myfile << vertexcharacter, a; 

涉及comma operator,其评估的第一个参数(myfile << vertexcharacter),丢弃结果,然后计算第二个参数(a) 。原因是逗号运算符的优先级最低。

0

简短的回答: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;

0

必须再次

myfile << vertexcharacter << a;