文件和流

iostream标准库提供了cin和cout方法用于标准输入读取流和向标准输出写入流。

从文件读取流和向文件写入流,需要用到fstream库。它定了三个数据类型

数据类型

描述

ofstream

该数据类型表示输出文件流,用于创建文件并向文件写入信息

ifstream

该数据类型表示输入文件流,用于从文件读取信息

fstream

该数据类型通常表示文件流,同时具有ofstream和ifstream两种功能,这意味着它可以创建文件,从文件中读取信息,向文件写入信息

在C++中进行文件处理,必须在C++源代码文件中包含头文件<iostream>和<fstream>

 

打开文件

在从文件读取信息或向文件写入信息之前,必须先打开文件。ofstream和fstream对象都可以用来打开文件进行写操作,如果只需要打开文件进行对文件,则使用ifstream对象。

下面是open()函数的标准语法,open()函数是fstream、ifstream、ofstream对象的一个成员。

void open(const char *filename,ios::openmode mode);

在这里open()成员函数的第一个参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式。

模式标志

描述

ios::app

追加模式,文件写入都追加到文件末尾

ios::ate

文件打开后定位到文件末尾

ios::in

打开文件用于读取

ios::out

打开文件用于写入

ios::trunc

如果该文件已经存在,其内容将在打开文件之前被阶段,即把文件长度设置为0

上面两种或两种以上的模式结合使用。

例如想要以写入模式打开文件,并希望以写入模式打开文件,并希望截断文件,以防文件已存在,那么可以说使用以下语法:

ofstream outline;

outline.open(“file.dat”,ios::out | ios::trunc);

 

如果想要打开一个文件用于读写,可以使用以下语法:

ifstream afile;

afile.open(“file.dat”,ios::out | ios:: in);

 

关闭文件

当C++程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。

close()函数时fstream、ifstream和ofstream对象的一个成员

void close();

 

写入文件

在C++编程中,我们使用流插入符(<<) 向文件写入信息,就像使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里使用的是ofstream或fstream对象,而不是cout对象。

读取文件

在C++编程中,我们使用流插入符(>>) 向文件读取信息,就像使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里使用的是ofstream或fstream对象,而不是cin对象。

 

/***
afile.cpp
***/
#include<iostream>
#include<fstream>
using namespace std;int main()
{char data[100];//open file with write mode
    ofstream outfile;outfile.open("afile.dat");cout << "Write to the file" << endl;cout << "Enter your name: ";cin.getline(data,100);//write data of user inout to fileoutfile << data << endl;cout << "Enter you age: ";cin >> data;cin.ignore();//write data to file againoutfile << data << endl;//close the file
    outfile.close();//open file with read mode
    ifstream infile;infile.open("afile.dat");cout << "Reading from the file " << endl;infile >> data;//write data in screencout << data << endl;//read data from file again and show it in screeninfile >> data;cout << data << endl;//close the reading file
    infile.close();return 0;
}

运行结果:

exbot@ubuntu:~/wangqinghe/C++/20190813$ g++ afile.cpp -o afile

exbot@ubuntu:~/wangqinghe/C++/20190813$ ./afile

Write to the file

Enter your name: wangqinghe

Enter you age: 25

Reading from the file

wangqinghe

25

 

上面的实例使用了cin对象的附件函数,比如getline()从外部读取一行,ignore()函数会忽略掉之前读语句留下的多余字符。

 

文件位置指针

istream和ostream都提供了用于重新定位文件位置指针的成员函数。这些成员函数包括istream的seekg(“seek get”)和关于ostream的seekp(“seek put”)。

seekg和seekp的参数通常是一个长整型,第二个参数可以用于指定查找方向。查找方向可以是iOS::beg(默认从流的开头开始定位),也可以是ios::cur(从流的当前位置开始定位),也可以是ios::end(从流的末尾开始定位)。

文件位置指针是一个整数值,指定了从文件起始位置到文件所在位置的字节数。

//定位到fileObject的第n个字节(假定是iOS::beg)
fileObject.seekg(n);//把文件的读指针从fileObject从当前位置后移n个字节
fileObject.seekg(n,ios::cur);//把文件的读指针从fileObject末尾王回移n个字节
fileObject.seekg(n,ios::end);//定位到问价末尾
fileObject.seekg(0,ios::end);

 

转载于:https://www.cnblogs.com/wanghao-boke/p/11343772.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++预处理器

预处理器是一些指令&#xff0c;指示表一起在实际编译之前所需要完成的预处理。 所有的预处理器指令都是以井号(#)开头&#xff0c;只有空格字符可以出现在预指令处理之前。预处理指令不是C语句&#xff0c;所以他们不会以分号(;)结尾。 #define预处理 #define预处理指令用于创…

C++信号处理

信号是由操作系统传给进程的中断&#xff0c;会提早终止一个程序。在UNIX、LINUX、Mac OS或windows系统上&#xff0c;可以通过按Ctrlc产生中断。有些信号不能被程序捕获&#xff0c;但是下表所列信号可以在程序中被捕获&#xff0c;并可以基于信号采取适当的动作。这些信号是定…

Python—“helloworld”

接触一门计算机新语言&#xff0c;第一件事就是要准备好一个编译器用来打代码。 网上很多环境搭建的方法&#xff0c;具体参照https://www.runoob.com/python/python-install.html 由于我之前一直在使用Ubuntu的gcc编译&#xff0c;恰好也可以运行python程序&#xff0c;我也就…

创建线程

pthread_self函数 获取线程ID。其作用对应进程中 getpid() 函数。 pthread_t pthread_self(void); 返回值&#xff1a;成功&#xff1a;0&#xff1b; 失败&#xff1a;无&#xff01; 线程ID&#xff1a;pthread_t类型&#xff0c;本质&#xff1a;在Linux下为无符号…

C/C++头文件

C/C头文件一览C、传统 C#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入&#xff0f;输出#include <iomanip.h> //参数化…

Python变量类型

变量存储在内存中的值&#xff0c;这就意味着在创建变量时会在内存开辟一个空间。 基于变量的数据类型&#xff0c;解析器会分配指定内存&#xff0c;并决定什么数据可以被存储在内存中。 因此变量可以指定不同的数据类型&#xff0c;这些变量可以存储整数、小数、或字符。 变量…

线程退出

pthread_exit函数 将单个线程退出 void pthread_exit(void *retval); 参数&#xff1a;retval表示线程退出状态&#xff0c;通常传NULL 思考&#xff1a;使用exit将指定线程退出&#xff0c;可以吗&#xff1f; …

线程分离

pthread_detach函数 实现线程分离 int pthread_detach(pthread_t thread); 成功&#xff1a;0&#xff1b;失败&#xff1a;错误号 线程分离状态&#xff1a;指定该状态&#xff0c;线程主动与主控线程断开关系。线程结束后&#xff0c;其退出状态不由其他线程获取&#x…

线程知识点

控制原语对比 进程 线程 fork pthread_create exit pthread_exit wait pthread_join kill pthread_cancel getpid pthread_self 命名空间 线程属性 本节作为指引性介绍&…

读写锁

读写锁 与互斥量类似&#xff0c;但读写锁允许更高的并行性。其特性为&#xff1a;写独占&#xff0c;读共享。 读写锁状态&#xff1a; 一把读写锁具备三种状态&#xff1a; 1. 读模式下加锁状态 (读锁) 2. 写模式下加锁状态 (写锁) 3. 不加锁状态 读写锁特性&#xff1a; 读…

条件变量

条件变量&#xff1a; 条件变量本身不是锁&#xff01;但它也可以造成线程阻塞。通常与互斥锁配合使用。给多线程提供一个会合的场所。 主要应用函数&#xff1a; pthread_cond_init函数 pthread_cond_destroy函数 pthread_cond_wait函数 pthread_cond_timedwait函数 pthread_c…

文件锁

借助 fcntl函数来实现锁机制。 操作文件的进程没有获得锁时&#xff0c;可以打开&#xff0c;但无法执行read、write操作。 fcntl函数&#xff1a; 获取、设置文件访问控制属性。 int fcntl(int fd, int cmd, ... /* arg */ ); 参2&#xff1a; F_SETLK (struct flock *) 设置…

进程间同步

互斥量mutex 进程间也可以使用互斥锁&#xff0c;来达到同步的目的。但应在pthread_mutex_init初始化之前&#xff0c;修改其属性为进程间共享。mutex的属性修改函数主要有以下几个。 主要应用函数&#xff1a; pthread_mutexattr_t mattr 类型&#xff1a; 用于定义…

Python3字符串

字符串是Python中最常用的数据类型&#xff0c;可以使用单引号或双引号来创建字符串 创建字符串很简单&#xff0c;为变量分配一个值即可。 val1 ‘hello world’ var2 “Runoob” Python访问字符串的值 Python不支持单字符类型&#xff0c;单字符在Python中也是作为 一个字符…

服务器客户端编程

server 下面通过最简单的客户端/服务器程序的实例来学习socket API。 server.c的作用是从客户端读字符&#xff0c;然后将每个字符转换为大写并回送给客户端。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #incl…

Python3元组

Python的元组与列表相似&#xff0c;不同之处在于元组的元素不能修改 元组使用小括号&#xff0c;列表使用方括号 元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 创建空元组 tup1 (); tup2 (1,) 元组只包含一个元素时&#xff0c;需要在…

Python3字典

字典是另一种可变容器模型&#xff0c;可存储任意类型的对象。 字典的每个键值(key>value)对用冒号分隔&#xff0c;每个对之间用逗号分隔&#xff0c;整个字典包括在花括号里&#xff0c;格式如下 d {key1 : value,key2 : value2} 键必须是唯一&#xff0c;但值则不必。 值…

线程回收

pthread_join函数 阻塞等待线程退出&#xff0c;获取线程退出状态 其作用&#xff0c;对应进程中 waitpid() 函数。 int pthread_join(pthread_t thread, void **retval); 成功&#xff1a;0&#xff1b;失败&#xff1a;错误号 参数&#xff1a;thread&#xff1a;线…

Python3数字

Python3数字数据类型用于存储数值。 数据类型是不允许改变的&#xff0c;这就意味着&#xff0c;如果改变数字数据类型的值&#xff0c;将重新分配内存空间。 Python支持三种不同不同的数值类型&#xff1a; 整型&#xff08;int&#xff09;&#xff1a;通常是被称为整型或整数…

多进程服务器

注意&#xff1a;包含了“wrap.c” 和“wrap.h”文件在上篇博客中 /*** server.c ***/ #include<stdio.h> #include<string.h> #include<netinet/in.h> #include<arpa/inet.h> #include<signal.h> #include<sys/wait.h> #include<ctype…