做网站的技术体系,西安营销策划推广公司,做软件代理去哪个网站,中国建设银行辽宁分行网站#x1f47b; 概念
文件流输出使用标准库 fstream#xff0c;定义三个新的数据类型#xff1a;
数据类型描述ofstream输出文件流#xff0c;用于创建文件并向文件写入信息。ifstream输入文件流#xff0c;用于从文件读取信息。fstream文件流#xff0c;且同时具有 ofst… 概念
文件流输出使用标准库 fstream定义三个新的数据类型
数据类型描述ofstream输出文件流用于创建文件并向文件写入信息。ifstream输入文件流用于从文件读取信息。fstream文件流且同时具有 ofstream 和 ifstream 两种功能意味着可以创建文件写入信息读取信息 准备工作
使用文件流需要包含 iostream 和 fstream 头文件
#include fstream
#include iostream打开文件
语法格式
使用 open() 函数打开文件是 fstream、ifstream 、ofstream 对象的成员
void open(const char *filename, ios::openmode mode);参数 filename —— 打开文件的名称和位置 参数 mode —— 文件被打开的模式 模式标志描述ios::app追加模式所有写入都追加到文件末尾ios::ate文件打开后定位到文件末尾ios::in打开文件用于读取ios::out打开文件用于写入ios::trunc如果该文件已经存在其内容将在打开文件之前被截断即把文件长度设为 0
示例代码 示例1以写入模式打开文件并希望截断文件以防文件已存在 ofstream outfile;
outfile.open(file.dat, ios::out | ios::trunc );示例2打开一个文件用于读写 ifstream infile;
infile.open(file.dat, ios::out | ios::in );关闭文件
语法格式
使用 close() 函数打开文件是 fstream、ifstream 、ofstream 对象的成员。
程序终止时会自动关闭刷新所有流释放所有分配的内存并关闭所有打开的文件
void close();示例代码
outfile.close();写入文件
语法格式
使用流插入运算符 向文件写入信息使用的是 ofstream 或 fstream 对象
ofstream data;读取文件
语法格式
使用流提取运算符 向文件写入信息使用的是 ifstream 或 fstream 对象
ifstream data;文件位置指针
语法格式
使用 istream 的 seekgseek get和关于 ostream 的 seekpseek put重新定位文件位置指针。
istream seekg(streampos pos);
ostream seekp(streampos pos);参数 pos —— 直接定位到流中的绝对位置其中 streampos 是一个表示流位置的类型 istream seekg(streamoff off, ios::seekdir dir);
ostream seekp(streamoff off, ios::seekdir dir);参数 off —— 偏移量正数/负数 参数 dir —— 定位方向 模式标志描述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 的末尾
fileObject.seekg(0, ios::end);综合实例
char data[100];// 写模式打开文件
ofstream outfile;
outfile.open(test.txt);
cout Writing to the file endl;// 写入数据
cout Enter your name: ;
cin.getline(data, 100);
outfile data endl;cout Enter your age: ;
cin data;
cin.ignore();
outfile data endl;// 关闭文件
outfile.close(); char data[100];// 读模式打开文件
ifstream infile;
infile.open(test.txt);
cout Reading from the file endl;// 读取数据
infile data;
cout data endl;
infile data;
cout data endl;// 关闭文件
infile.close(); cin.getline( ) 与 cin 区别 cin.getline( )cin 读取方式按行读取 —— 读取输入流中的字符直到遇到换行符 \n 为止并将换行符之前的字符存储到目标字符串中。逐个单词读取 —— 读取输入流中的下一个非空白字符直到遇到空白字符如空格、制表符 \t 、换行符 \n为止前导空白字符从当前输入流的位置开始读取不跳过前导空白字符跳过输入流前面所有前导空白字符存储换行符读取到换行符为止存储换行符之前的字符并自动处理换行符不会读取换行符清理缓冲区自动处理换行符不需要额外清理缓冲区手动清理输入缓冲区中的换行符如使用 cin.ignore()用途读取整行文本读取单个单词或数字理解输入 ABCDEFG\n 读取 ABCDEFG\n并自动处理换行符输入变量值为 ABCDEFG缓冲区为空输入 ABCDEFG\n 读取 ABCDEFG输入变量值为 ABCDEFG缓冲区为 \n为避免影响后面的输入需要手动清理 cin.ignore( ) 的作用 主要用于清除缓冲区中的换行符以避免影响后续的输入操作即手动清理缓冲区。对代码 cout Enter your name: ;
cin.getline(data, 100); // 读取姓名
outfile data endl;cout Enter your age: ;
cin data; // 读取年龄
cin.ignore(); // 清除缓冲区中的换行符
outfile data endl;cout Enter your address: ;
cin.getline(data, 100); // 读取地址
outfile data endl;如果移除 cin.ignore() 语句 缓冲区中的换行符 \n 会被 cin.getline() 读取导致 data 被赋值为空字符串该输入被跳过。文件中写入的内容会变成 John Doe
25如果使用了 cin.ignore() 缓冲区中的换行符会被清除cin.getline() 会正确读取用户输入的地址。文件中写入的内容会是 John Doe
25
Your Address