有个txt文本文件,内容有5行,每行的字符数都不相同,目的是将最后一行的最后10个字符进行修改。
于是我想到用fseek函数,用法为fseek(fp,-10L,2).但是发现fseek函数只能读取第一行的字符,运行程序后发现后4行
字符都没了,只是对第一行的最后10个字符进行了修改。
这种情况应该怎么办呢?
于是我想到用fseek函数,用法为fseek(fp,-10L,2).但是发现fseek函数只能读取第一行的字符,运行程序后发现后4行
字符都没了,只是对第一行的最后10个字符进行了修改。
这种情况应该怎么办呢?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream fin("1.txt");
string s1;
while(getline(fin,s1));循环读取每一行,到最后一行时终止
int size=s1.size();
string s2=s1.substr(size-10);//获取最后十个字符
就fseek()说说吧
fseek函数一般用于二进制文件,
用于文本文件的时候要注意回车换行
因为回车换行视为两个字符0x0D和0x0A,但是在定位的时候是安装一个字符处理的 0x0a
可以考虑将文件整个读入内存。
然后fseek(fp,-10L,2)确实是定位到了第5行的倒数第10个字符
LZ可以单独写一个小程序试试。看是不是你的文件本身数据写入的格式问题。
我是直接在VC++6.0下面测试的。
VS在字符集上面的设置比较烦