第15周-二进制文件与字符串流-项目0-课后实践·阅读程序(3)

来源:互联网 发布:2016年淘宝用户数量 编辑:程序博客网 时间:2024/05/24 06:32
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:刘畅* 完成日期:2015 年 6  月  13 日 * 版 本 号:v1.0 * * 问题描述:阅读下面的程序,指出其功能,体会seekg()、tellg()等函数的功能及其用法 。* 输入描述:自动输入;* 程序输出:文本输出:


(1)

#include<iostream>#include <fstream>using namespace std;const char * filename = "a.txt";int main (){    long l,m;    ifstream file (filename, ios::in|ios::binary);    l = file.tellg();    file.seekg (0, ios::end);    m = file.tellg();    file.close();    cout << "size of " << filename;    cout << " is " << (m-l) << " bytes.\n";    return 0;}


运行结果:

(2)

#include <fstream>using namespace std;int main (){    long pos;    ofstream outfile;    outfile.open ("test.txt");    outfile.write ("This is an apple",16);    pos=outfile.tellp();    outfile.seekp (pos-7);    outfile.write (" sam",4);    outfile.close();    return 0;}


运行结果:

 

(3)

#include <iostream> #include <fstream> using namespace std;int main() {         fstream outfile,infile;         outfile.open("data.txt",ios::out);         for (int i=0;i<26;i++)       outfile<<(char)('A'+i);         outfile.close();         infile.open("data.txt",ios::in);         char ch;         infile.seekg(6,ios::beg);         if(infile.get(ch))           cout<<ch;         infile.seekg(8,ios::beg);         if(infile.get(ch))                 cout<<ch;         infile.seekg(-8,ios::end);    if(infile.get(ch))                 cout<<ch;             cout<<endl;         infile.close();     return 0; }

运行结果:


学习心得:

tellg()                                        得到输入文件位置标记的当前位置。

seekg(位移量,参照位置)    以参照位置为基础移动若干字节

seekp(文件中的位置)           将输出文件位置标记移到指定的位置

以参照位置位移时位移量负往头,正向尾。

0 0
原创粉丝点击