2016-04-13 25 views
0

fstreamを使用してファイルに書き込もうとしていますが、コードが動作していません。私が間違っていることを助けてくれますか?C++でのファイルへの書き込み

void mem_test() 
    { 
      fstream filepointer; 
      string buffer; 

      if (filepointer.is_open()) 
      { 
        filepointer.open("test.t", ios::in | ios::out | ios::binary); 
        getline(filepointer, buffer); 
        getline(filepointer, buffer); 

        filepointer << "TEST!" << endl; 
      } 
      filepointer.close(); 
    } 

マイファイルtest.t(Perimssionは、Linuxでファイルを読み書きする):

Example Line 1 
Example Line 2 
Example Line 3 
Example Line 4 

感謝を!

+6

最初のものということ –

+0

@molbdniloいいえ、それは簡単な "タイプミス"です。これは、あなたのコードスニペットでは、開いていないファイルを開こうとしています。コマンドの順番ですが、コメントの中で指し示すことと閉じることに投票することは道のりです。それを答えると、自動的に削除されなくなります。 – NathanOliver

+0

@NathanOliver私はそれをtyよりむしろ根本的な誤解po、でも私はあなたの意見を見ます。 – molbdnilo

答えて

1

ファイルストリームは、まだ、まだファイルを開いていないので、常にブロックが実行されない場合(オープニングで、結果として、この場合には、あなたのコードをfalseを返します。最初のif (filepointer.is_open())チェックを行う必要がありませんあなたが最初にチェックしようとしているものと矛盾するファイル)。それでは(すなわちif(filepointer.is_open())を使用し、その後、エラーのためにストリームの状態をチェックし、最初のファイルを開く

2

ファイルは、それがあるべきように、実際にファイルを開く前に開いている場合は、チェックされています。

void mem_test() 
{ 
     fstream filepointer; 
     string buffer; 
     filepointer.open("test.t", ios::in | ios::out | ios::binary); 
     if (filepointer.is_open()) 
     { 
       getline(filepointer, buffer); 
       getline(filepointer, buffer); 
       filepointer << "TEST!" << endl; 
       filepointer.close(); 
     } 
} 
関連する問題