C++中Fstream文件流与freopen重定向的示例分析
这篇文章给大家分享的是有关C++中Fstream文件流与freopen重定向的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
宿州网站建设公司创新互联建站,宿州网站设计制作,有大型网站制作公司丰富经验。已为宿州上千提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的宿州做网站的公司定做!
目录freopen重定向fstream文件流freopen 重定向
使用方法:
freopen(“in.txt”,“r”,stdin);//从in.txt读入
freopen(“out.txt”,“w”,stdout);//向out.txt输出
freopen(“CON”,“r”,stdin);//从控制台读入
freopen(“CON”,“w”,stdout);//向控制台输出
fclose(stdin);//关闭输入,可以省略,但建议加上
fclose(stdout);//关闭输出,可以省略,但建议加上
默认是从控制台(Command)读入,输出哦!
实例
#include#include //freopen要包含cstdio头文件 using namespace std; int main() { freopen("in.txt","r",stdin);//从in.txt读入 freopen("out.txt","w",stdout);//向out.txt输出 int a; cin >> a; cout << a; fclose(stdin);//关闭输入,可以省略,但建议加上 fclose(stdout);//关闭输出,可以省略,但建议加上 return 0; }
代码写好了,我们编译,但先不要运行。
然后再新建in.txt,往里面写上666,保存,退出。
然后我们运行main.exe,然后打开out.txt(可能有2,3秒的延迟,刷新即可)
瞧,成功了!
更多
stdin:标准输入
stdout:标准输出
“r”:Read,读
“w”,Write,写
由于fopen比较麻烦,我就不赘述了,可以去看其他博主的文章。
可以看一下这两篇: 博客
博客还有fread和fwrite,大家可以借鉴以下。
优缺点
使用方便,但不能方便在控制台与文件之间转换,且使用后system(“cls”)清屏会失效。
fstream文件流
要使用fstream,您需要:
#includeusing namespace std;
两个构造函数的原型:
basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) basic_ofstream(const char* __s, ios_base::openmode __mode = ios_base::out|ios_base::trunc)
__s代表文件名,如"in.txt",也可以是绝对路径,但最好不要有中文和空格。(前面freopen也是一样)
ios_base::openmode即打开属性,可以是下面几种值:
ios::in 输入(ifstream默认)
ios::out 输出(ofstream默认)
ios::app(append)附加在末尾
ios::ate(at end)从末尾开始
ios::trunc有则覆盖,无则创建
ios::nocreate如字面意思,如不存在则打开失败
ios::noreplace如字面意思,如存在则打开失败
ios::binary以二进制形式打开/关闭,一般都会被忽略
如果要叠加多个属性,用位或运算符 | 连接即可。
实例
#include#include //fstream using namespace std; int main() { ifstream fin("in.txt", ios::in/*可以省略*/); ofstream fout("out.txt", ios::out | ios::trunc/*可以省略*/); int a; fin >> a; fout << a << endl; fin.close(); fout.close(); return 0; }
和刚刚结果一样,就不放图片了。
ifstream fin是创建了一个ifstream对象(就像cin是iostream已经帮我们创建的一个istream对象)
ofstream fout和上面差不多。
.close()一定要加!不然可能出错!!!
这里这么取名,只是本人习惯,大家起其他的也行。
成员函数
fstream的成员函数是真心多啊,怪不得功能强大!
这里只给大家介绍一些常用的。
这里只给大家介绍istream,ostream基本一样。
fin.open(const char* __s, ios_base::openmode __mode = ios_base::in);
和构造函数差不多,不解释了。
if (!fin/*或fin.bad()或!fin.good()*/) { cout << "Unable to open!" << endl; return 0; }
这个也很好懂,不解释。
fin.eof() fin.fail() fin.bad() fin.good()
四个函数返回值都是bool。
如果遇到文件末尾,则eof返回true。
如果操作失败,则fail返回true。
如果eof和fail都返回false,则bad返回false。
如果bad返回false,则good返回true。
很绕,是不是!其实,根据字面意思,都很好懂。
还有各种各样的功能,请大家自己去探索吧!
再给大家推荐一个博客吧,大家自己去看:博客
还有,希望大家养成一个好习惯,再打开文件后,使用
if(!fin) cout << "Fin open Fail" << endl; if(!fout) cout << "Fout open Fail" << endl;
来检测是否成功!这样做最保险!
优缺点
操作较为麻烦。但是功能挺多的,且十分强大!
感谢各位的阅读!关于“C++中Fstream文件流与freopen重定向的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
文章名称:C++中Fstream文件流与freopen重定向的示例分析
当前URL:http://myzitong.com/article/pgdsse.html