2011-01-16 9 views
0

これは私のコードです:コンパイルエラー

#include <iostream> 
#include <fstream> 

void WriteInDB() 
{ 
    ofstream myfile; 
    myfile.open ("result.txt"); 
    for(int i=0;i<512;i++) 
    { 
     if(strcmp(filelist[i],"")!=0) 
      myfile << filelist[i]<<"\n"; 
    } 
    myfile.close(); 
} 

私はこのプログラムをコンパイルするときに、私は次のエラーを取得:

エラー14エラーC2228:.open「の左側を'クラス/構造体/共用体が必要です
エラー17エラーC2228:' .close 'の左側にクラス/構造体/共用体が必要です
エラー11エラーC2146:構文エラー:'; 'が見つかりません。識別子の前に 'MYFILE'
エラー10エラーC2065: 'ofstreamの':宣言されていない識別子 エラー12エラーC2065: 'MYFILE':宣言されていない識別子
エラー13エラーC2065: 'MYFILE':宣言されていない識別子
エラー15エラーC2065: 'MYFILE':宣言されていない識別子
エラー16エラーC2065: 'myfileを':宣言されていない識別子

誰もがそれらを解決するために私を助けることができますか?

答えて

1

あなたはstd::で、すべての標準ライブラリのものを付加するのを忘れました。

3

ostreamには、std名前空間の一部です。そのように、あなたが追加する必要があります。

using namespace std; 

代わりにあなたはSTDとのostreamのすべてのインスタンス::、すなわち前に付けることができます。

std::ofstream myfileを。

+0

'使用namespace'は非推奨と考えられています。別の方法として、 'std :: ofstream'を関数に使うことです。 –

+0

@larsmans:私はそれが非難されたと言って何も見たことがありません。私は個人的には非常に悪い習慣だと考えています(しかし、まだ多くの人がそれをやっています)。 –

+0

私はC++の第一人者ハーブサッターのに言及しています「名前空間ルール#1:完全に 'using'ディレクティブを避けてください」。もちろん、標準で廃止されているわけではありません。おそらく、Sutterの「狂った野蛮人の虐殺軍隊が、無差別に破壊されてしまえば、それはどこでも良い」と言えるでしょう。 –

0
#include <iostream> 
#include <fstream> 

int const filelist_length = 512; 
char *filelist[filelist_length]; 
// you actually seem to use empty strings rather than null pointers as emtpy 
// entries; consider a vector<string> instead 

void WriteInDB() { 
    using namespace std; 
    ofstream myfile ("result.txt"); 
    for (int i = 0; i < filelist_length; i++) { 
    if (strcmp(filelist[i], "") != 0) { 
     myfile << filelist[i] << '\n'; 
    } 
    } 
}