2013-05-14 25 views
13

Bu bir hatayla kod parçasıdır:Eşleşen fonksiyonu - açık lfStream()

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; 
} 

Ve şey, ben tür neler olduğunu hiçbir fikrim yok. Bütün şey VS'de düzgün bir şekilde derler. Ancak bunu dev cpp ile derlemem gerekiyor.

Yukarıdaki kodda satır atma hatalarını açıkladım. hatalar şunlardır:

eşleşen işlev çağrısı 'std :: basic_ifstream :: open (std :: string &) çağrısı için
eşleşen işlevi' std :: basic_ofstream :: open (std :: string &) için onlar iostream sınıfında mevcut ve her şey VS çalışmasına rağmen ben gibi hatalar olsun kodunun farklı bölgelerinde


, 'beyan edilmiş max()', ya da 'numeric_limits bir std üyesi değil'


Neden bu hatayı alıyorum?

+0

Uygun özelliklere sahip misiniz? Senin dahil ve dahil? – RandyGaul

+0

Evet, tabiki ben – user2252786

+0

yapmayın rahatsız etmeyin, bu genellikle tam olarak budur :) – RandyGaul

cevap

31

Değiştir:

file.open(name.c_str()); 

veya ayırmak için hiçbir neden yoktur tıpkı Oluşturucu kullanın inşaat ve açık: std::string argument için

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

Destek C++ 11'de eklendi. Bu gerçeği belgelemek ve gereksiz kopyalamayı önlemek için, std::string const& numaralı argüman geçişini loadNumbersFromFile() değiştirmediğinden, loadNumbersFromFile() olarak.

+0

Teşekkürler, şimdi çalışıyor. – user2252786