0

非常に単純なプログラムですが、なぜ機能しないのかわかりません。

#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までの数字のリストがあり、単語やフォーマットはありません。何か案は?手伝ってくれてありがとう。

4

5 に答える 5

5

出力を連結する場合は、データを2つの<<演算子にパイプするだけです。

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)(コンマ演算子)がを返すため、コードに問題がありますbiつまり、コードでは、ファイルに書き込んだだけです。

于 2012-12-14T08:44:24.630 に答える
1

変化する

myfile << ( "<connection> remote 208.211.39.160 %d udp </connection>\n", i );

myfile << "<connection> remote 208.211.39.160 " << i << " udp </connection>\n";
于 2012-12-14T08:45:58.210 に答える
1

次のことを試してください。

myfile << "<connection> remote 208.211.39.160 %d udp </connection>\n" << i;

基本的にmyfile << (str , i)は「評価(str , i)して評価結果をostreammyfileに書き込む」という意味です。

( "<connection> remote 208.211.39.160 %d udp </connection>\n", i )評価の結果は次のようになりますi

コンマ演算子の説明を見てください:http: //en.wikipedia.org/wiki/Comma_o​​perator

于 2012-12-14T08:46:42.617 に答える
0

ofstreamを使用して書き込むためにprintf構文を使用しています。他の人はそれが機能しない理由を説明しました。これを修正するには、次のようにします

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
于 2012-12-14T08:46:17.417 に答える
0

「printf」してストリーミングしようとしているようです...

私はこれがあなたが望むものにもっと似ていると思います:

myfile << "<connection> remote 208.211.39.160 " << i << " udp </connection>"<<std::endl;
于 2012-12-14T08:47:03.990 に答える