C++文件流

文件流:以文件为输入输出对象的流

#include<fstream>

一、文件操作打开一个输入或输出文件

1.打开一个输出文件

ofstream fout;

fout.open("1.txt");

2.打开一个输入文件

ifstream  fin;

fin.open("2.txt");

3.打开一个文件,既可以输入也可以输出

fstream finout;

finout.open("3.txt");

更便捷方式   ofstream fout("1.txt");     ifstream  fin("2.txt");   fstream finout("3.txt");  不指定路径就在默认的项目文件中

二.文件的输入,输出

1.>> ,<< 方式

fout<< “hello world";

char ch;

fin>>ch;

操纵符 功能 输入/输出 
            dec 格式化为十进制数值数据 输入和输出 
            endl 输出一个换行符并刷新此流 输出 
    ends 输出一个空字符 输出 
    hex 格式化为十六进制数值数据 输入和输出 
    oct 格式化为八进制数值数据 输入和输出 
    setpxecision(int p) 设置浮点数的精度位数 输出

  例如:要把123当作十六进制输出:file1<<hex<<123;要把3.1415926以5位精度输出:file1<<setpxecision(5)<<3.1415926。

2.函数形式

1)fout.put(ch) 输出一个字符

2)get()函数比较灵活,有3种常用的重载形式:

          1)fin.get(ch) 取出一个字符存储在成中,或者ch=fin.get();功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符while(fin.get(ch))检测是否读到文件尾

          2)ifstream &get(char *buf,int num,‘\n‘‘);这种形式把字符读入由 buf 指向的数组,直到读入了 num 个字符或遇到了由 delim 指定的字符,如果没使用 delim 这个参数,将使用缺省值换行符‘‘\n‘‘。        例如:

            file2.get(str1,127,‘A‘);//从文件中读取字符到字符串str1,当遇到字符‘‘A‘‘或读取了127个字符时终止。

3) getline :fin.getline(buf,80); //前提char buf[80];

读写数据块
    要读写二进制数据块,使用成员函数read()和write()成员函数,它们原型如下:

    read(unsigned char *buf,int num);
    write(const unsigned char *buf,int num);

  4)read()从文件中读取 num 个字符到 buf 指向的缓存中,如果在还未读入 num 个字符时就到了文件尾,可以用成员函数 int gcount();来取得实际读取的字符数;而 write() 从buf 指向的缓存写 num 个字符到文件中,值得注意的是缓存的类型是 unsigned char *,有时可能需要类型转换。

例:

    unsigned char str1[]="I Love You";
    int n[5];
    ifstream in("xxx.xxx");
    ofstream out("yyy.yyy");
    out.write(str1,strlen(str1));//把字符串str1全部写到yyy.yyy中
    in.read((unsigned char*)n,sizeof(n));//从xxx.xxx中读取指定个整数,注意类型转换
    in.close();out.close();

三.关闭文件

fin.close();

四.检测文件是否打开成功

if(fin.fail())

if(!fin.good())

if(!fin)

括号内为真,则打开失败

五、检测EOF
  成员函数eof()用来检测是否到达文件尾,如果到达文件尾返回非0值,否则返回0。原型是int eof();

例:if(in.eof())ShowMessage("已经到达文件尾!");

六、随机读取文件

seekg()输入指针移动到指定位置,seekp()输出指针移动到指定位置,用app的话,seekp方法会失效

fin.seekg(streamoff offset,seek_dir origin);

offset 一般是字节数;

seek_dir origin  : ios::beg  开始位置

ios::cur 当前位置

ios::end 文件结尾

fin.seekg(字节数);移动到第字节数+1的位置

时间: 2024-10-24 19:40:20

C++文件流的相关文章

文件流:&quot;fopen&quot;,&quot;fclose&quot;,“ftell”&quot;fseek&quot;,&quot;fgets&quot;,&quot;fprintf&quot; ,“feof”,&quot;fwrite&quot;,&quot;fread&quot;

char const* filename="D:/hello.txt"; "fopen", FILE *fp=fopen(char const *name,char const mode); e.g:FILE *fp = fopen(filename,"wb"); 打开文件流,name为要打开文件的路径,如这里的filename:mode 为对文件的操作模式,通常使用:"wb"(写操作),"rb"(读操作)

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

JAVA学习--文件流FileInputStream和FileOutputStream操作

* 1.流的分类: * 按照数据流向的不同:输入流  输出流 * 按照处理数据的单位的不同:字节流  字符流(处理的文本文件) * 按照角色的不同:节点流(直接作用于文件的)  处理流 *  * 2.IO的体系 * 抽象基类            节点流(文件流)                                缓冲流(处理流的一种) * InputStream        FileInputStream            BufferedInputStream * Outp

编程中的文件流

最近在看JAVA核心技术,本以为想看懂一些文件流,还有一些东西,但是自己没有理解. 这里我在网上总结的一些文件流的知识,希望可以对大家理解有帮助!!    什么是流? 流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向.流不但可以处理文件,还可以处理动态内存.网络数据等多种数据形式.如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的.

C#四种文件流的区别

1.FileStream类的读写操作 FileStream类可以对任意类型的文件进行读取操作,而且我们也可以按照需要指定每一次读取字节长度,以此减少内存的消耗,提高读取效率. 代码实例: //创建文件读取对象 using(FileStream fileReader=new FileStream (文件的物理路径,FileMode.Open)) { //创建文件写入对象 using(FileStream fileWrite=new FileStream (需要保存的文件物理路径+文件后缀名,Fil

重要的几种流:文件流、缓冲流、转换流!

一.文件流(字节流,字符流) 1.字节流 package com.zijie; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class TestFileInputStream { public static void main(String[] args) { int b = 0; FileInputStream in = null

FrameWork:文件流操作

文件和流 绝对路径:E:\msd1508\Framework\Day05\Day05笔记.txt相对路径:从当前路径出发,到目的地的路径 假设当前路径是Day04 ..\Day05\Day05笔记.txt 网络路径 Using System.IO; File/FileSystemInfo 文件(文件操作方法) Directory/DirectoryInfo 目录(目录操作方法) DriveInfo 磁盘(磁盘操作方法) stream 流/抽象基类 FileStream 文件流/字节方法读写 St

c++文件流的基本操作

C++编程语言在实际编程中,对于文件的操作是一个比较简单的操作,大家可以通过一些简单的实例就能充分的掌握这一应用技巧,并在实际编程中给自己的程序开发带来一些帮助.下面就让我们一起来看看C++文件流操作的相关应用技巧吧. C++文件流操作之文件写入: #include < fstream> #include < iostream> using namespace std; int main(){ string str; ofstream out("d.txt");

文件流读写、大文件移动 FileStream StreamWriter

文件流读写 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace _09文件流 { class Program { static void Main(string[] args) { //string msg = "飞流直下三千尺"; ////字符串转字节数组 //byte[] buffer = System.Tex