非常简单的程序,不确定它为什么不起作用:
#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;
int main ()
{
ofstream myfile ("test.txt");
if (myfile.is_open())
{
for( int i = 1; i < 65535; i++ )
{
myfile << ( "<connection> remote 208.211.39.160 %d udp </connection>\n", i );
}
myfile.close();
}
return 0;
}
基本上它应该打印65535次该句子,然后将其保存到txt文件中。但是txt文件只有一个从1到65535的数字列表,没有单词或格式。有任何想法吗?谢谢你的帮助。
答案 0 :(得分:5)
如果要连接输出,只需将数据传输到两个<<
运算符中,如下所示:
myfile << "<connection> remote 208.211.39.160 %d udp </connection>\n" << i;
请注意,插值在这种情况下不起作用,因此如果要将i
变量放在字符串的中间,则必须手动拆分:
myfile << "<connection> remote 208.211.39.160 " << i << " udp </connection>\n"
或者在输出之前应用某种其他插值格式。
您的代码中存在问题,因为在C ++中,(a, b)
(逗号运算符)返回b
。因此,在您的代码中,它意味着您只需将i
写入文件。
答案 1 :(得分:1)
变化
myfile << ( "<connection> remote 208.211.39.160 %d udp </connection>\n", i );
到
myfile << "<connection> remote 208.211.39.160 " << i << " udp </connection>\n";
答案 2 :(得分:1)
尝试以下方法:
myfile << "<connection> remote 208.211.39.160 %d udp </connection>\n" << i;
基本上,myfile << (str , i)
表示“评估(str , i)
并将评估结果写入ostream myfile ”。
( "<connection> remote 208.211.39.160 %d udp </connection>\n", i )
评估的结果等于i
看一下逗号运算符说明: http://en.wikipedia.org/wiki/Comma_operator
答案 3 :(得分:0)
您正在使用printf语法使用ofstream进行编写。其他人已经解释了为什么它不起作用。要修复它,请执行以下操作
myfile << "<connection> remote 208.211.39.160"<<i<<"udp </connection>\n";
或者如果你想去C风格
printf( "<connection> remote 208.211.39.160 %d udp </connection>\n", i ); //fprintf to write to file
答案 4 :(得分:0)
看起来你正试图&#34; printf&#34;和流...
我认为这更像你想要的东西:
myfile << "<connection> remote 208.211.39.160 " << i << " udp </connection>"<<std::endl;