コードにバグがあります(質問の最後のコード)。私の C++ 実行可能ファイルの目的は、数値を含むファイルを読み取り、それを std::vector にコピーしてから、内容を stdout に出力することですか? 問題はどこだ?(あとい?)
次の数字を含む単純なテキスト ファイルがあります (各行に 1 つの数字があります)。
mini01:algorithms ios$ cat numbers.txt
1
2
3
4
5
プログラムを実行すると、もう 1 行表示されます。
mini01:algorithms ios$ ./a.out
1
2
3
4
5
0
stdout に 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;
}