七、输入/输出流---随机访问
来源:互联网 发布:中国网络诗歌首页 编辑:程序博客网 时间:2024/06/01 01:33
7 随机存取
各种流类型通常支持对流中的数据的随机访问;标准库提供一对函数,来定位(seek)到流中给定的位置,以及告诉(tell)我们当前的位置;
- 虽然标准库为所有的流定义了seek和tell函数,是否有意义依赖于绑定到那个设备。
- 绑定到cin,cout,cerr和clog的流不支持随机访问;
- 对于
istream和ostream
类型通常不支持随机访问,所以一般只适用于fstream
和sstream
类型。
1 seek 和tell函数
1、标准库定义了两对seek和tell函数
2、g版本对于输入
3、p版本对于输出
说明:
1. 对于某些只读或只写的流,我们可以对这些流只使用g或者p版本。
例子:(在文件末尾添加统计逐行累加的字节数)
//------------------------省略-----------------fstream inout("test.txt", ios::ate |ios::in|ios::out|ios::binary);if (!inout) return -1;streampos end_mark = inout.tellg(); //获得末尾位置,ate自动定位末尾位置inout.seekg(0, fstream::beg); //定位到文件开始位置size_t count = 0;string line;while (inout && inout.tellg() != end_mark && getline(inout, line)){ //加一是换行符 count += line.size() + 1; //获取当前位置 streampos mark = inout.tellg(); //定位到文件尾部 inout.seekg(0, fstream::end); inout << count; //写入文件累计的字符个数 if (mark != end_mark) inout << " "; //如果不是到达内容尾部,就添加空白; inout.seekg(mark); //恢复}inout.seekg(0,fstream::end); //定位到末尾inout << "\n";inout.seekg(0,fstream::beg);char ch;while (inout.get(ch)){ cout << ch;}//------------------省略-------
结果为:
第一行第二行第三行第四行7 14 21 28
test.txt以ansi格式保存;当写会数据的时候就是会变成乱码。。有点疑惑。。。还未解决!
阅读全文
0 0
- 七、输入/输出流---随机访问
- 七、输入/输出流--iostream简介
- 七、输入/输出流--streambuffer类介绍--
- 七、输入、输出系统
- 七、输入/输出流-- 七、输入/输出流--基于字符串的流---basic_istringstream 模板
- java输入与输出(I/O)(三):随机访问
- 七、输入/输出流--基于文件的流
- 七、输入/输出流--基于字符串的流---streambuf类
- 七、输入/输出流--基于字符串的流---basic_ostringstream模板
- 七、输入/输出流--基于字符串的流---basic_stringstream模板
- 七、输入/输出流--streambuffer类介绍--缓冲区迭代器
- 七、输入/输出流--streambuffer类介绍--自定义缓冲区
- 002_007 Python 随机输入/输出即随机读取文件
- 七、输入/输出流--IOStreamm基本类和标准IOStream对象--未格式化输入和输出函数
- 流随机访问
- 随机访问流:
- 随机访问流RandomAccessFile
- IO 之键盘录入与控制台输出,随机访问流,合并流
- 解决cat=[android.intent.category.BROWSABLE] dat=http://url typ=text/html
- 华为机试-字符串合并处理
- 查看tomcat运行日志
- Java Socket编程详解及示例代码
- Shell脚本基本信息
- 七、输入/输出流---随机访问
- Python默认编码错误SyntaxError: Non-ASCII character '\xe5'之解决方法
- Visual Studio控制台程序输出窗口一闪而过的解决方法
- css中的包裹性
- Oracle把Blob内容导出到TXT中
- win10远程ubuntu16.04桌面
- ios-全局变量和静态本地变量
- 卡特兰数
- JAVA_HOME环境变量修改后,java版本保持不变的问题