I have a bug with my code (the code at the end of the question). The purpose of my C++ executable is to read a file that contains numbers, copy it in a std::vector and then just print the contents in the stdout? Where is the problem? (atoi?)
I have a simple text file that contains the following numbers (each line has one number)
mini01:algorithms ios$ cat numbers.txt 1 2 3 4 5 When I execute the program I receive one more line:
mini01:algorithms ios$ ./a.out 1 2 3 4 5 0 Why I get the 6th line in the stdout?
#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; }
while (myfile.good())was correct. Did you see it in a book, did someone tell you to use it, did it just feel right? etc.while ( ! myfile.eof() ), but where do people learn this? We've got to find out, and do something to warn about it.