头文件fstream的函数,c文件流fstream中的函数

1 , c文件流fstream中的函数#include <fstream>using namespace std;int main() ofstream outf; outf.open(__FILE__, ios::out | ios::app);//以追加方式打开文件__FILE__ outf<<"//test";//文件尾部输出 outf.close(); return 0;}楼主参考【头文件fstream的函数,c文件流fstream中的函数】
2,includefstreamh什么函数fstream.h是一个头文件 , 里面有关于文件操作的一些常量定义和函数声明 。只要我们包含了这个头文件,像文件操作这类的库函数 就可以直接调用 。#include#include #include using namespace std ; typedef struct node //定义customertypelist结点类型 < cout< p=p->next ; } }
3,文件名fstream是什么意思f是file的意思 。这个是文件的输入输入库函数标准库fstream流只接受一个c式的字符串作为文件名, 并不接受string作为参数. 对于这一点我也很疑惑哦, 为什么标准库不重载一个呢...可以使用string的c_str()成员函数来把string类型转换为c式的字符串 string file_name = "ssss.txt"; ifstream file1(file_name.c_str()); // c_str函数把string用c字符串的样式返回.头文件fstream当要从某个文件中读取数据或输出数据到某个文件是用到 。
4,fstream对象可调用哪些函数继承自basic_fstream的函数:basic_filebuf<E, T> *rdbuf() const;bool is_open() const;void open(const char *s,ios_base::openmode mode = ios_base::in | ios_base::out);void close();以及继承自basic_istream的函数:bool ipfx(bool noskip = false);void isfx();basic_istream& operator>>(basic_istream& (*pf)(basic_istream&));basic_istream& operator>>(basic_ios<E, T>& (*pf)(basic_ios<E, T>&));basic_istream& operator>>(ios_base<E, T>& (*pf)(ios_base<E, T>&));basic_istream& operator>>(basic_streambuf<E, T> *sb);basic_istream& operator>>(bool& n);basic_istream& operator>>(short& n);basic_istream& operator>>(unsigned short& n);basic_istream& operator>>(int& n);basic_istream& operator>>(unsigned int& n);basic_istream& operator>>(long& n);basic_istream& operator>>(unsigned long& n);basic_istream& operator>>(void *& n);basic_istream& operator>>(float& n);basic_istream& operator>>(double& n);basic_istream& operator>>(long double& n);streamsize gcount() const;int_type get();basic_istream& get(E& c);basic_istream& get(E *s, streamsize n);basic_istream& get(E *s, streamsize n, E delim);basic_istream& get(basic_streambuf<E, T> *sb);basic_istream& get(baiic_streambuf<E, T> *sb, E delim);basic_istream& getline(E *s, streamsize n)Ebasic_istream& getline(E *s, streamsize n, E delim);basic_istream& ignore(streamsize n = 1,int_type delim = T::eof());int_type peek();basic_istream& read(E *s, streamsize n);streamsize readsome(E *s, streamsize n);basic_istream& putback(E c);basic_istream& unget();pos_type tellg();basic_istream& seekg(pos_type pos);basic_istream& seekg(off_type off, ios_base::seek_dir way);int sync();5,急求 C fstream 的 使用方法为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中 , 已经使用取代,所有的C++标准头文件都是无后缀的 。) 。这是 的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你 。我们从文件操作类的设计开始, 我会讲解如何进行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 很简单吧! 现在继续文件输入, 需要一点技巧, 所以先确认你已经明白了流操作,对 "<<" 和">>" 比较熟悉了, 因为你接下来还要用到他们 。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来定义 。#include //使用c++中的文件流对象要包含头文件fstream #include #include using namespace std; double file_length(string filename)//写一个函数来取得一个文本文件的长度 { ifstream inobj(filename.c_str());//创建输入文件流象,并初始化 if(!inobj){//文件不存在 cout<<"file open failed.\n"; return -1; } string t = ""; double len = 0; while(!inobj.eof()){//这里是关键,如果没有读到文件的结尾 inobj>>t;//把遇到非空格或非回车都当成string读取 len++; } inobj.close(); return len; } bool fwrite(string filename,char * content)//将content写入文件中 { ofstream outobj(filename.c_str());//建立输出文件流对象 if(!outobj){ cout<<"file error.\n"; return false; } string t(content); outobj<>i; fout<<<" "; } fin.close(); fout.close(); } } }

    推荐阅读