一、string类的getline函数(全局函数)
getline(cin,str)函数是处理string类的函数。第二个参数为string类型的变量。读入时第二个参数为string类型,而不是char*,要注意区别
getline()函数的定义如下所示
1. istream& getline ( istream &is , string &str , char delim );
2. istream& getline ( istream &is , string &str );
is 进行读入操作的输入流
str 用来存储读入的内容
delim 终结符,遇到该字符停止读取操作,不写的话默认为回车。
二、读取文件 (原文链接:https://blog.csdn.net/augusdi/article/details/8865378)
在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。
1、打开文件
在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
filename:文件名; mode:打开文件的方式; access:打开文件的属性取值;
例:以二进制输入方式打开文件F:\ccc.txt
fstream file1;
file1.open("F:\ccc.txt",ios::binary|ios::in,0);
另外,fstream有和open一样的构造函数,故可以在定义的时候打开文件:
fstream file1.open(“F:\ccc.txt");
特别的,fstream有两个子类,ifstream(input file stream)和ofstream(output file stream),ifstream默认以输入方式打开文件,ofstream默认以输出方式打开文件:
ifstream file1("F:\ccc.txt");
ofstream file2("F:\ccc.txt");
- 关闭文件
打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作:
file1.close()
- 读写文件
读写文件分文本文件和二进制文件的读取,对于文本文件的读取比较简单,用插入器和析取器就可以了;而对于二进制的读取就要复杂些,下要就详细的介绍这两种方式
(1)文本文件的读写
文本文件的读写很简单:用插入器(<<)向文件输出;用析取器(>>)从文件输入。假设file1是以输入方式打开,file2以输出打开。示例如下
file2<<"i love ccc";//向文件写入字符串
int i;
file1>>i; //从文件中输出一个整数值
(2) 二进制文件的读写
①put(): put()函数向流写入一个字符,其原型是ofstream &put(char ch),使用也比较简单,如file1.put('c');就是向流写一个字符'c'。
②get(): get()函数比较灵活,有3种常用的重载形式:
第一种就是和put()对应的形式:;功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符。如;表示从文件中读取一个字符,并把读取的字符保存在x中。
第二种重载形式的原型是: ;这种形式是从流中返回一个字符,如果到达文件尾,返回EOF,如;和上例功能是一样的。
第三种形式的原型是:;这种形式把字符读入由buf指向的数组,直到读入了num个字符或遇到了由 delim 指定的字符,如果没使用delim这个参数,将使用缺省值换行符'\n'。