- 论坛徽章:
- 0
|
回复 15# EricFisher
我想看l8.3.get.cpp里面in.eof()的状态。
(gdb) l
6
7 ifstream& open_file(ifstream &in,const string &file){
8 in.close();
9 in.clear();
10 in.open(file.c_str());
11 return in;
12 }
13
14 int main(){
15 string fileName,s;
(gdb)
16 cout << "Enter filename :" << endl;
17 cin >> fileName;
18
19 ifstream inFile;
20 if(!open_file(inFile,fileName.c_str())){
21 cout << "error: can not open file:" << fileName
22 << endl;
23 return -1;
24 }
25 get(inFile);
(gdb) b 25
Breakpoint 1 at 0x8049305: file l8.14.cpp, line 25.
(gdb) run
Starting program: /home/dengxin/learning/c++primer_4th/8/main
Enter filename :
aa
Breakpoint 1, main () at l8.14.cpp:25
25 get(inFile);
Missing separate debuginfos, use: debuginfo-install glibc-2.16-24.fc18.i686 libgcc-4.7.2-8.fc18.i686 libstdc++-4.7.2-8.fc18.i686
(gdb) s
get (in=...) at l8.3.get.cpp:9
9 string ival;
(gdb) l
4 #include<exception>
5 #include<string>
6 #include<fstream>
7 #include<sstream>
8 istream& get(istream& in){
9 string ival;
10 //int ival;
11
12 while(in >> ival,!in.eof()){
13 if(in.bad())
(gdb)
14 throw runtime_error("IO stream error.");
15
16 if(in.fail()){
17 cerr << "bad data,try again";
18 in.clear();
19 in.ignore(200,' ');
20 continue;
21 }
22 cout << ival << "*";
23 }
(gdb) n
12 while(in >> ival,!in.eof()){
(gdb)
13 if(in.bad())
(gdb)
16 if(in.fail()){
(gdb)
22 cout << ival << "*";
(gdb)
12 while(in >> ival,!in.eof()){
(gdb)
13 if(in.bad())
(gdb) call in.eof()
Couldn't find method std::istream::eof
(gdb) p in.eof()
Couldn't find method std::istream::eof
(gdb) |
|