上次写获取文件大小的时候也试过,打开之后主动先seek就好了
tellg(); //返回当前指针的位置,也就是文件的大小,单位是字节四、 示例代码//读写txt文件 std::string in_read_txt = "in_read.txt"; std::ifstream file_in_read_txt(in_read_txt); // 读取文件 // 文本文件逐行读取数据 if(!file_in_read_txt.is_open()) // 判断文件是否打开 { std::...
seekg(相对位置,参照位置); //相对操作 tellg(); //返回当前指针位置 seekp(绝对位置); //绝对移动, //输出流操作 seekp(相对位置,参照位置); //相对操作 tellp(); //返回当前指针位置 参照位置: ios::beg = 0 //相对于文件头 ios::cur = 1 //相对于当前位置 ios::end = 2 //相对于文件尾 基...
这些方法返回或接受 streampos 类型的参数,用于标识流的位置。 总的来说,streampos 是 C++ 中用于表示流位置的类型,可以帮助你管理和操作输入输出流的位置信息。 tellg 函数 streampostellg(); 功能: 获取当前文件指针的位置。 返回值: 当前文件指针的位置。 二、ofstream 类 1.1 构造函数 explicitofstream(constchar...
使用这个原型,流指针被改变为指向从文件开始计算的一个绝对位置。要求传入的参数类型与函数 tellg 和tellp 的返回值类型相同。 seekg ( off_type offset, seekdir direction ); seekp ( off_type offset, seekdir direction ); 使用这个原型可以指定由参数direction决定的一个具体的指针开始计算的一个位移(offset)。
流指针 get 和 put 的值对文本文件(text file)和二进制文件(binary file)的计算方法都是不同的,因为文本模式的文件中某些特殊字符可能被修改。由于这个原因,建议对以文本文件模式打开的文件总是使用seekg 和 seekp的第一种原型,而且不要对tellg 或 tellp 的返回值进行修改。对二进制文件,你可以任意使用这些函数,...
f.is_open()){cout<<"CANNOT OPEN"<<endl;continue;}f.seekg(0,ios::end);n=f.tellg();// 文件大小s=newchar[n+1];f.seekg(0,ios::beg);f.read(s,n);s[n]='\0';f.close();// 采用一种简单的判断,遇到LINE_NUM_START后接一个数字,// 则认为它是一个行号.for(intj=0;j<n;j++)...
//ifstream 类和 fstream 类有 tellg 成员函数,能够返回文件读指针的位置; int tellg(); //ofstream 类和 fstream 类有 tellp 成员函数,能够返回文件写指针的位置。 int tellp(); 这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) , 就是一个整数,代表当前get 流指针的位置 (用tel...
- 对于所有的输入输出流都有至少一个指针,指向下一个要操作的位置 ofstream put_point ifstream get_point fstream put_point和get_point - 获取流指针位置 tellg(): 返回输入流指针的位置(返回类型long) tellp(): 返回输出流指针的位置(返回类型long) - 设置指针位置 seekg(long position): 设置输入流指针位置...
2tellg和tellp的值始终是一样的。 问fstream中真有所谓的读指针和写指针吗如果有他们是一个东西吗 答实际上我们知道fstream继承自ifstream和ofstream是他们俩的子类 而seekp和tellp是ofstream的成员函数,seekg和tellg是ifstream的成员函数seekp是指seek putseekg是指seek get。之所以在fstream中他们相同是因为这里指定打开...