输出到文件c ++

时间:2012-12-14 08:41:23

标签: c++

非常简单的程序,不确定它为什么不起作用:

#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的数字列表,没有单词或格式。有任何想法吗?谢谢你的帮助。

5 个答案:

答案 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;