std::vector<int> loadNumbersFromFile(std::string name)
{
std::vector<int> numbers;
std::ifstream file;
file.open(name.c_str());
if(!file) {
exit(EXIT_FAILURE);
}
int current;
while(file >> current) {
numbers.push_back(current);
file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
return numbers;
}
问题是它在VS 2012中运行得很好,但在Dev C ++中它只读取文件中的第一个数字 - while循环只运行一次。有什么问题?
它应该与.txt文件一起使用。数字输入应该是:
1 3 2 4 5
答案 0 :(得分:3)
这是一种从文件中将整数读取到向量中的惯用方法:
#include <iterator>
#include <fstream>
#include <vector>
std::vector<int> loadNumbersFromFile(const std::string& name)
{
std::ifstream is(name.c_str());
std::istream_iterator<int> start(is), end;
return std::vector<int>(start, end);
}
答案 1 :(得分:2)
代码
file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
将跳过所有内容到下一个换行符。在这种情况下,您可能不希望这样。