c++ - Cannot find input file -
this question exact duplicate of:
- cannot open input file 1 answer
i trying create program asks user name of file, opens file, adds sum of integers listed on file, writes sum on output file.
after writing code , saving testfile1.txt
same folder program, program keeps giving me the: "could not access testfile1
" (message output notify myself unable open testfile1.txt
).
here have far (skipped lines description blocks):
#include <iostream> #include <fstream> #include <string> using namespace std; int main(){ ifstream inputfile; ofstream outputfile; string testfile1; string sum; int total = 0; int num; cout << "please input name of file." << endl; cin >> testfile1; cin.get(); inputfile.open(testfile1.c_str()); if (inputfile.fail()) { inputfile.clear(); cout << "could not access testfile1" << endl; return(1); } while (!inputfile.eof()) { inputfile >> num; total = total + num; inputfile.close(); } outputfile.open(sum.c_str()); outputfile << total << endl; outputfile.close(); if (outputfile.fail()) { cout << "could not access file." << endl; return 1; } return 0; }
question:
how can make program find , open testfile1.txt
?
note:
i pretty sure when prompted file name, did not misspell.
here few remarks figure out possible problem:
1.you reduce lines of code attaching streams file during definition, instead of defining them , use open
, so:
ifstream inputfile(testfile1.c_str());
2.to check if file open (and handle if couldn't):
if (!inputfile) error ("can't open input file: ", testfile1);
and:
if (!outputfile) error ("can't open output file: ", sum);
right after definition.
3.all open files implicitly closed @ end of program (or function contains them), there no need explicitly close()
them.
4.to read contents of input file , sum them:
int sum = 0; string line; // read line while (getline(inputfile, line)) { stringstream ss(line); // assuming reading integers separated white space int num = 0; // extract each number on line while (ss >> num) total += num; // reset line line.erase(); }
note: test , modify code according specific needs. side note: omit: cin.get();
in code.
Comments
Post a Comment