#include <iostream> #include <string> using namespace std;//命名空间 #include <fstream> void main() { ifstream infile; infile.open("data.txt",ios::in);//打开文件,以便后边读取内容 if (!infile)/*检查文件是否打开*/ cerr<<"open the file fail."<<endl; if (!infile.is_open())/*检查文件是否打开*/ cerr<<"open the file fail."<<endl; /*随意定义几个常用变量*/ int i=5; char c[25]; char ch; //循环多去文件到文件末尾,或者到达循环上限——(i的值) while(!infile.eof()&& i) { // //=======输出很奇怪======= cout<<"infile.eof() = "<<infile.eof()<<endl; cout<<endl<<"------>"<<endl; cout<<"infile.eofbit = "<<infile.eofbit<<endl; cout<<endl<<"------>"<<endl; cout<<"infile.good ="<<infile.good()<<endl; cout<<endl<<"------>"<<endl; //读取一行 // infile.getline(c,40);// 40>25,按理应该与上边结果一样啊,但是 执行结果是 :内存出错,why infile.getline(c,3);// 还是有些不对,输出结果中所有 infile.tellg 总是-1,显示异常。 cout<<"c :"<<c<<endl;//=============注意:输出是字符串,而不是c[0],这是因为cout 对象中函数"<<"的作用 ch=infile.get(); cout<<"infile.get(ch) :"<<ch<<endl; cout<<endl<<"------>"<<endl; cout<<"the postition @ : "<<infile.tellg()<<endl; cout<<endl<<"------>"<<endl; i--; } infile.close(); infile.clear(); /* 以下注释代码,输出是 空。没有任何输出 char b[5]="asde"; for(i=0;i<25;i++) b[i]=i; cout<<endl<<b<<endl;// 与下边代码相比,不同之处在于 "cout<<b"; 由于b没有字符串停止符“/0”,所以cout输出为空。 //当 c-string 没有‘/0’时,cout 输出空,并不报错。一定要注意。 */ /* char b[25];//字符串较小,导致后边赋值越界。但是b是指针,所以一直往后运行。必须注意此类越界错误。 for(i=0;i<60;i++) { b[i]=i; cout<<endl<<b[i]<<endl; } */ }