有关读取txt文件问题

moyou3344 2011-08-21 11:01:49
用getline一行行读,但是我现在需要重复的读取整个txt文档,但getline只能往下读,请问有没有什么函数可以这次读到某一行,下次继续从头开始读
...全文
47 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2011-08-21
  • 打赏
  • 举报
回复
CFile::Seek();
SetFilePointer()
hongwenjun 2011-08-21
  • 打赏
  • 举报
回复
#include <iostream>   // 第一行内容
#include <fstream>
#include <string>

using namespace std;

int main()
{
fstream fin("main.cpp", fstream::in);
// 获得文件长度
fin.seekg(0, ios::end);
int length = fin.tellg();
fin.seekg(0, ios::beg);
cout << "main.cpp 文件长度:" << length << endl;

string str;
getline(fin, str);
cout <<"输出第一行" <<str << endl;

fin.seekg(0, ios::beg);
getline(fin, str ,'/' ); //读入 '/' 之前的
cout <<"重新输出第一行" <<str << endl;

return 0;
}
hongwenjun 2011-08-21
  • 打赏
  • 举报
回复
    // 获得文件长度
fin.seekg(0, ios::end);
int length = fin.tellg();
fin.seekg(0, ios::beg);
cout << "data.bin 文件长度:" << length << endl;


先定位到文件尾 ,获得文件长度, 再定位到文件头
hongwenjun 2011-08-21
  • 打赏
  • 举报
回复
二进制 读写 seekg 定位,文本应该也可以定位到 开始出吧

seekg 语法: 
istream &seekg( off_type offset, ios::seekdir origin );
istream &seekg( pos_type position );


函数seekg()用于输入流,并且它将重新设置"get"指针到当前流的从origin偏移offset个字节的位置上,或是置"get"指针在position位置。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧