VC与DEV编译器关于ifstream的文本反复读取问题存在的不同
来源:互联网 发布:淘宝怎么开通直播间 编辑:程序博客网 时间:2024/04/29 21:37
运行以下代码,进行文本的反复读取
#include<fstream> #include<iostream>#include<string.h>using namespace std;int main(){ifstream infile;cout<<"**************1显示文本内容***************"<<endl;char c[256];infile.open("test.txt"); while(infile>>c) { cout<<c; cout<<endl; }infile.close();cout<<endl;cout<<"**************2显示正文(非注释)内容***************"<<endl;infile.open("test.txt");while(infile>>c) { if(c[0]!='*') { cout<<c; cout<<endl; } } infile.close(); cout<<endl; cout<<"**************3显示被注释字符个数***************"<<endl; infile.open("test.txt"); int num=0;while(infile>>c) { if(c[0]=='*') { num+=(strlen(c)-1)/2; } }cout<<"注释字符个数:"<<num; infile.close();}
DEV运行结果如图所示
然后用Microsoft Visual C++运行,结果如图所示
用infile.is_open()进行测试,结果表明文本成功进行打开和关闭。
将代码第二段进行以下修改
cout<<"**************2显示正文(非注释)内容***************"<<endl;ifstream infile1;infile1.open("test.txt");while(infile1>>c) { if(c[0]!='*') { cout<<c; cout<<endl; } } infile1.close(); cout<<endl;
结果发现第二段成功显示
于是猜想在vc中关闭流并不能改变流对象的内部状态。
修改代码
#include<fstream> #include<iostream>#include<string.h>using namespace std;int main(){ifstream infile;cout<<"**************1显示文本内容***************"<<endl;char c[256];infile.open("test.txt"); while(infile>>c) { cout<<c; cout<<endl; }infile.clear();infile.close();cout<<endl;cout<<"**************2显示正文(非注释)内容***************"<<endl;infile.open("test.txt");while(infile>>c) { if(c[0]!='*') { cout<<c; cout<<endl; } }infile.clear(); infile.close(); cout<<endl; cout<<"**************3显示被注释字符个数***************"<<endl; infile.open("test.txt"); int num=0;while(infile>>c) { if(c[0]=='*') { num+=(strlen(c)-1)/2; } }cout<<"注释字符个数:"<<num; infile.close();cout<<endl;}
在关闭之前加入语句infile.clear()清除流的状态
结果如图
结果成功显示
由此得到以下猜想,在vc中用同一个ifstream对文本进行反复读取时需要清除流状态,而DEV会自动清除。
阅读全文
0 0
- VC与DEV编译器关于ifstream的文本反复读取问题存在的不同
- Dev编译器的编译问题
- VC编译器的问题
- ifstream fileIn 读取文件遇到的问题
- 关于客户端反复点击不同选项卡重复创建请求的问题
- 关于ubantu的自带vi文本编译器的问题
- 关于不同的编译器使用过程中遇到的问题!
- 关于在不同编译器下中文的乱码问题!
- VC编译器与GCC编译器的区别
- 发现VC编译器和gcc编译器的一点不同
- 关于编译器的问题
- 使用ifstream读取文件的数据不完整的问题
- 栈变量被覆盖的问题在不同编译器中的表现,蛋疼的VC++
- ifstream读取文件的坑
- ifstream 文件流读取格式数据出现的问题
- ifstream的使用问题
- 关于循环读取文本中分隔符的问题
- ifstream或ofstream读取二进制文本乱码问题
- Ubuntu16.04以太网连接教程
- 旋转数组的最小数字
- Spring中AutowireCapableBeanFactory的使用
- 数据分析(3)-数据清洗
- 结构体
- VC与DEV编译器关于ifstream的文本反复读取问题存在的不同
- Oracle
- HashSet、TreeSet、LinkedHashSet的区别
- 相关滤波器算法 速度做到极致
- C++中lambda表达式(匿名函数)的用法
- 递归方法
- ZOJ Problem Set
- Linux 文件编程
- qt qml和c++交互的一个简单例子