我的代码有一个错误(问题末尾的代码)。我的 C++ 可执行文件的目的是读取包含数字的文件,将其复制到 std::vector 中,然后仅在 stdout 中打印内容?问题出在哪里?(阿托伊?)
我有一个简单的文本文件,其中包含以下数字(每行有一个数字)
mini01:algorithms ios$ cat numbers.txt
1
2
3
4
5
当我执行程序时,我又收到一行:
mini01:algorithms ios$ ./a.out
1
2
3
4
5
0
为什么我在标准输出中得到第 6 行?
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
void algorithm(std::vector<int>& v) {
for(int i=0; i < v.size(); i++) {
cout << v[i] << endl;
}
}
int main(int argc, char **argv) {
string line;
std::vector<int> vector1;
ifstream myfile("numbers.txt");
if ( myfile.is_open()) {
while( myfile.good() )
{
getline(myfile, line);
vector1.push_back(atoi(line.c_str()));
}
myfile.close();
}
else {
cout << "Unable to open file" << endl;
}
algorithm(vector1);
return 0;
}