2012-03-05 11 views
0

を提出する:書き込みが、私はそうのようなテキストファイルに書き込むのVisual C++

void writeText(char* desc){ 
    FILE * pFile; 
    pFile = fopen ("CycleTestInfo.txt","a+"); 
    fputs (desc,pFile); 
    fclose(pFile); 
} 

私はforループでこれを埋め込むと、私は、ファイルに私が上だループを書きたい:

for(int i=0; i<cycles; i++){ 
    char* cycle="--NEW CYCLE "+(char)i+"---\r\n"; 
    writeText(cycle); 
} 

しかし、私はcycleと宣言している行にerror C2110: '+' : cannot add two pointersを得ています。サイクル番号、iを含めることができ、両側に文字列を追加できるように変数を宣言する方法はありますか?

ありがとうございました!

答えて

1

これは、C++で文字列を連結する方法ではありません。

sprintfまたはstd::stringのいずれかを使用できます。 string::c_str()戻りconst char*以来

void writeText(const char* desc) 

:っぽい::あなたも関数のシグネチャを変更しなければならないこと

std::string cycle("--NEW CYCLE"); 
cycle += (char)i; 
cycle += "---\r\r"; 

writeText(cycle.c_str(); 

注 -

後者の方がC++です。

stringstreamを使用してもかまいませんが、この場合は多少の過剰です。それを見て価値がある。

エラーが発生する理由は、"--NEW CYCLE "std::stringではなく、C++でconst char*であることです。

あなた動作するようにあなたの行を編集できます。

const char* cycle= (std::string("--NEW CYCLE ")+(char)i+"---\r\n").c_str(); 

が、私はそれをしないだろう。それは醜く見えます。

+0

は、私はまだ私のテキストファイルに表示されません。 – moesef

+0

@moesefそれは別の問題のようです。更新されたコードで別の質問をしてください。完成度のために –

+0

を 'cycle + = '0' +(char)i;'にしてテキストファイルに表示する必要があります。 – moesef

1

これはCではないCです。char *は文字列ではなく、charまたは複数のchar値の先頭へのポインタです。

C++では、文字クラスとしてstd::stringを使用します。

正しい方法はしかし、出力にテキストは次のようになります。osが出力ストリームにある

os << "--NEW CYCLE " << i << "---\r\n"; 

あなたは、そのように文字列を作成ストリーミングクラスとしてostringstreamを使用したい場合は、その後、文字列を取得するには.str()を使用してください。

+0

C++ではないが、Cではどういう意味ですか? –

+0

彼は 'cstdio'がCライブラリの一部であることを意味します。しかし、C++でそれを使用することはできます。 'fstream'よりもファイルの末尾に追加するほうが簡単だからです。 – moesef

+0

cstdioはC++で使用できますが、実際にiostreamを実装している場合は、cstdioを使用してC標準ライブラリの観点から実行する可能性があります。 C++スタイルの書き込みがあります。特に、std :: stringを使用して文字列を格納したり、ストリームを作成したり、文字列形式でデータを書き込んだりするときに使用します。 私にとっては、iostreamの最大の欠陥は、フォーマットがストリームに埋め込まれ、印刷されるオブジェクトではなくなることです。 標準出力に何かを16進数で印刷する際の恐ろしい「副作用」を見てください。 – CashCow

2

あなたはファイルにフォーマットされたテキストを書くためにfprintfを使用することができます。

fprintf(FILE, "--NEW CYCLE %d ---\r\n", i); 
+0

これは、ファイルの末尾に最後のサイクルを追加しないことを除いて動作します。ファイルへの最初のエントリは、最後に入力されるエントリです。 – moesef

関連する問題