C++ - 随机访问(random access) 流(stream) 的 详解 及 代码
2013-12-17 15:58
711 查看
随机访问(random access) 流(stream) 的 详解 及 代码
本文地址: http://blog.csdn.net/caroline_wendy/article/details/17378303随机访问流, 使用mark(标记)标注流的位置, 包含两种方法tell和seek;
tell, 是返回流mark的位置, 包含g和p两种版本.g表示get, 指输入流; p表示put, 指输出流;
seek, 是跳至流mark所指的位置, 也包含g和p两种版本;seek可以指定位置, 也可以指定偏移(offset);
代码如下:
/* * cppprimer.cpp * * Created on: 2013.11.28 * Author: Caroline */ /*eclipse cdt, gcc 4.8.1*/ #include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main() { std::fstream inOut("copyOut", std::fstream::ate/*末尾*/ | std::fstream::in | std::fstream::out); if(!inOut) { std::cerr << "Unable to open file! " << std::endl; return EXIT_FAILURE; } std::fstream::pos_type end_mark = inOut.tellg(); inOut.seekg(0, std::fstream::beg); //重定位在起点 std::size_t cnt(0); std::string line; while (inOut && inOut.tellg() != end_mark && getline(inOut, line)) { cnt += line.size() + 1; std::fstream::pos_type mark = inOut.tellg(); //记住当前位置 inOut.seekp(0, std::fstream::end); //跳至末尾 inOut << cnt; if (mark != end_mark) inOut << " "; //除了最后一行, 均写入空格 inOut.seekg(mark); //回到记录的地点 } inOut.seekp(0, std::fstream::end); inOut << "\n"; return 0; }
输出(文本):
Caroline Wendy Spike Winny 9 12 16 21
本文出自 “永不言弃” 博客,请务必保留此出处http://spikeking.blog.51cto.com/5252771/1387948
相关文章推荐
- C++ - 随机访问(random access) 流(stream) 的 详解 及 代码
- 随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer
- 随机访问文件类RandomAccessFile
- 随机访问类(RandomAccessFile)
- Java 文件随机访问类-RandomAccessFile
- MappedByteBuffer高速缓存文件、RandomAccessFile随机访问
- Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile
- 随机访问文件 自身具备读写 的RandomAccessFile
- RandomAccessFile随机访问文件的读取和写入
- MappedByteBuffer高速缓存文件、RandomAccessFile随机访问
- IO包中的RandomAccessFile 随机读写访问
- 随机访问流RandomAccessFile
- RandomAccessFile随机访问分割文件
- [Java核心API]IO流--随机访问文件RandomAccessFile
- RandomAccess接口可以判断List对象是否支持快速随机访问(数组的get(i)访问)
- IO流--RandomAccessFile--随机访问文件
- RandomAccessFile随机访问文件,可读可写
- 随机访问文件类RandomAccessFile
- C++ - 随机数生成器(random-number generator) 的 详解 及 代码
- 随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer