2013-05-14 9 views
13

これはエラーとコードの一部です:ませんマッチング機能 - オープンはifstream()

std::vector<int> loadNumbersFromFile(std::string name) 
{ 
    std::vector<int> numbers; 

    std::ifstream file; 
    file.open(name); // the error is here 
    if(!file) { 
     std::cout << "\nError\n\n"; 
     exit(EXIT_FAILURE); 
    } 

    int current; 
    while(file >> current) { 
     numbers.push_back(current); 
     file.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    } 
    return numbers; 
} 

、よく、私は一種の何が起こっているか見当がつかない。全体がVSで正しくコンパイルされます。しかし私はdev cppでこれをコンパイルする必要があります。

私は上記のコードでエラーをスローする行をコメントアウトしました。エラーはありません:

のstd :: basic_ofstream ::オープン(のstd ::文字列&)コール 'コールのためのstd :: basic_ifstream ::オープン(のstd ::文字列&)
一致する関数' に該当する機能彼らはのiostreamクラスに存在し、すべてがVsの作品が、私は以下のようにエラーが出たコードのさまざまな部分で


、「宣言されていない最大()」、または「のnumeric_limitsは、STDのメンバーではありません」


なぜこのエラーが発生しますか?

+0

適切な内容がありますか?あなたはを含み、を含んでいますか? – RandyGaul

+0

はい、もちろんあります – user2252786

+0

怒らないでください、それは一般的に正確な理由です:) – RandyGaul

答えて

31

に変更:

file.open(name.c_str()); 

か、単に建設とオープンを分離する理由はないとのコンストラクタを使用します。std::string argumentため

std::ifstream file(name.c_str()); 

サポートはC++ 11で追加されました。

loadNumbersFromFile()は、その事実を文書化し、不要なコピーを避けるために、引数のパスをstd::string const&で変更しません。

+0

ありがとう、それは今働きます。 – user2252786

関連する問題