问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

急求C++ fstream 的 使用方法

发布网友 发布时间:2022-04-24 00:24

我来回答

4个回答

热心网友 时间:2023-04-24 18:49

为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代<fstream.h>,所有的C++标准头文件都是无后缀的。)。这是 <iostream.h>的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, <iostream.h> 已经被<fstream.h>包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了! 但这篇文章介绍的方法,我们分别使用"ifstream"?和 "ofstream" 来作输入输出。
如果你用过标准控制台流"cin"?和 "cout," 那现在的事情对你来说很简单。 我们现在开始讲输出部分,首先声明一个类对象。
ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。

fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件.

ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。

int num = 150;
char name[] = "John Doe";
fout << "Here is a number: " << num << "\n";
fout << "Now here is a string: " << name << "\n"; 现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。 回写看起来像另一次输出, 然后调用方法关闭。像这样:

fout << flush; fout.close(); 现在你用文本编辑器打开文件,内容看起来是这样:

Here is a number: 150 Now here is a string: John Doe 很简单吧! 现在继续文件输入, 需要一点技巧, 所以先确认你已经明白了流操作,对 "<<" 和">>" 比较熟悉了, 因为你接下来还要用到他们。

热心网友 时间:2023-04-24 18:49

开一个文件
fstream f;
f.open("1.txt", ios::in | ios::binary);
if (!f.is_open()) // 检查文件是否成功打开
cout << "cannot open file." << endl;
ios::in与ios::bianry均为int型,定义文件打开的方式。
ios::in -- 打开文件用于读。
ios::out -- 打开文件用于写,如果文件不存在,则新建一个;存在则清空其内容。
ios::binary -- 以二进制bit流方式进行读写,默认是ios::text,但最好指定这种读写方式,即使要读写的是文本。因为在ios::text模式下,在写入时'\ n'字符将转换成两个字符:回车+换行(HEX: 0D 0A) 写入,读入时作逆转换,这容易引起不必要的麻烦。
ios::app -- 打开文件在文件尾进行写入,即使使用了seekp改变了写入位置,仍将在文件尾写入。
ios::ate -- 打开文件在文件尾进行写入,但seekp有效。

读写位置的改变
f.seekg(0, ios::beg); // 改变读入位置 g mean Get
f.seekp(0, ios::end); // 改变写入位置 p mean Put
第一个参数是偏移量offset(long),第二个参数是offset相对的位置,三个值:
ios::beg -- 文件头 ios::end -- 文件尾 ios::cur -- 当前位置

文件读写
char s[50];
f.read(s, 49);
s[50] = '\0'; // 注意要自己加上字符串结束符

char *s = "hello";
f.write(s, strlen(s));

补充 记得读写完成后用f.close()关闭文件。

热心网友 时间:2023-04-24 18:50

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:
1、插入器(<<)
  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<\"Write Stdout\"<<’\\n’;就表示把字符串\"Write Stdout\"和换行字符(’\\n’)输出到标准输出流。
2、析取器(>>)
  从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
  在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。
一、打开文件
  在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
参数:
filename:  要打开的文件名
mode:    要打开文件的方式
access:   打开文件的属性
打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:
ios::app:   以追加的方式打开文件
ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in:    文件以输入方式打开(文件数据输入到内存)
ios::out:   文件以输出方式打开(内存数据输出到文件)
ios::nocreate: 不建立文件,所以文件不存在时打开失败
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:  如果文件存在,把文件长度设为0
  可以用“或”把以上属性连接起来,如ios::out|ios::binary
  打开文件的属性取值是:
0:普通文件,打开访问
1:只读文件
2:隐含文件
4:系统文件
  可以用“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性打开文件。
  例如:以二进制输入方式打开文件c:\\config.sys
fstream file1;
file1.open(\"c:\\\\config.sys\",ios::binary|ios::in,0);
  如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:
file1.open(\"c:\\\\config.sys\"); <=> file1.open(\"c:\\\\config.sys\",ios::in|ios::out,0);
  另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:
fstream file1(\"c:\\\\config.sys\");
  特别提出的是,fstream有两个子类:ifstream(input file stream)和ofstream(outpu file stream),ifstream默认以输入方式打开文件,而ofstream默认以输出方式打开文件。 [Page]
ifstream file2(\"c:\\\\pdos.def\");//以输入方式打开文件
ofstream file3(\"c:\\\\x.123\");//以输出方式打开文件
  所以,在实际应用中,根据需要的不同,选择不同的类来定义:如果想以输入方式打开,就用ifstream来定义;如果想以输出方式打开,就用ofstream来定义;如果想以输入/输出方式来打开,就用fstream来定义。

热心网友 时间:2023-04-24 18:50

你知道cout\cin吧?他的输出终端是屏幕,输入终端是键盘.
fstream的输出终端是文件,输入终端也是文件.
ofstream是写文件,ifstream是读文件.
要使用他们要首先定义他们的对象,并和一个文件关联.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
前几天在楼下吃饭,店家推荐使用淘气购支付,听说可以用豆豆换东西。会... 绵阳淘气购科技有限公司怎么样? 四川省淘气购商贸有限公司怎么样? 盐酸洛美沙星分散片的作用 盐酸洛美沙星颗粒的剂量如何根据不同感染情况调整? 盐酸洛美沙星颗粒的化学名是什么? 盐酸洛美沙星胶囊功效 洛美沙星盐酸洛美沙星 洛美沙星的功效与作用 盐酸洛美沙星颗粒能治疗哪些类型的感染? 怎样用fstream对二进制文件进行内容修改和删除? 洋葱怎么吃好 生吃还是熟吃? C++,fsteam.read的问题,读取文件中的内容,得到的字符串末尾多出来内容。 有一个TXT文件,每行三个数字,排列如下,用fstream类的read函数读进字符数组里面,怎么总是错位的? c++ fstream read write问题 洋葱生吃怎么搭配? 请问谁知道94年梁祝里胡慧中濮存希版的马文才唱的所有插曲啊 濮存晰主演的《失乐园》中,篇尾曲是什么名字?? 请问濮存昕 演的一部影片。 求濮存昕和一位日本女演员主演的一部电影名称!! Humuhumunukunukuapua a 歌词中文翻译 谁知道濮淳昕的资料??? 求濮存昕版的《梁祝》里的一首插曲 歘齾虢麓嬲濮餮懿怎么读 台式电脑怎么用数据线连接手机热点 濮姓的来历,姓濮历史上有什么名人 清白之年歌词朴树 有谁知道*胡慧中濮存昕版电影《梁山伯与祝英台新传》的结尾曲《谁解其中味》的歌词与下载地址? vae有首歌里面有濮水一叶舟 电脑连上手机热点 用fstream把一个结构体用二进制存进文件,但是读取时失败。 c++文件操作 read C++用infile.read读取文件中的数据 大家帮我一下看看这个检查图片类型的函数有什么问题呀? C++ 如何将一个文件里的数据写入到另一个文件里? C++ fstream,write写入文件问题,大神帮帮忙 c++文件流的读写,read/write函数的例子跑不通 C++:fstream有类似C语言中fread()和fwrite这种进行块读写的函数么,我想要从文件中读取块 C++关于文件输入流read的读取问题。 用fstream出错出现一大堆烫字 如何在asp中防止图片木马上传 C++文件流的C++ 中 *fstream 操作 c++ 从文件中fin.read()和fin.write() 哪里的冰糖葫芦最好吃? 哪里的冰糖葫芦最好吃 哪的冰糖葫芦最好吃,最有名?如题 谢谢了 全国的冰糖葫芦排名最好吃? 哪有好吃的冰糖葫芦 北京哪儿的冰糖葫芦最好吃,最正宗? 淮北濉溪哪家的冰糖葫芦最好吃?