これはエラーのあるコードの一部です:
_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でコンパイルする必要があります。
上記のコードでエラーをスローする行をコメントアウトしました。エラーは次のとおりです。
_no matching function for call 'std::basic_ifstream<char>::open(std::string&)
no matching function for call 'std::basic_ofstream<char>::open(std::string&)
_
コードのさまざまな部分で、_numeric_limits is not a member of std
_またはmax() has not been declared
などのエラーが発生しますが、それらはiostream
クラスに存在し、すべてがVSで機能します。
このエラーが発生するのはなぜですか?
への変更:
_file.open(name.c_str());
_
または、コンストラクタを使用して、構造を分離して開く理由がないため、
_std::ifstream file(name.c_str());
_
_std::string
_引数 のサポートがc ++ 11で追加されました。
loadNumbersFromFile()
は_std::string const&
_による引数の受け渡しを変更しないので、その事実を文書化し、不要なコピーを回避します。