C++如何在文件中根据字符串匹配定位到相应位置
即用fstream打开文件,然后查找文件中是否有某一特定字符串,找到后将指针定位在该字符串的位置,关键是要定位,因为我要从这个位置处往后修改文件...
即用fstream打开文件,然后查找文件中是否有某一特定字符串,找到后将指针定位在该字符串的位置,关键是要定位,因为我要从这个位置处往后修改文件
展开
3个回答
展开全部
好办得很!读/写打开文件,一次读要找的字符串那么长的一串字符放在一个字符数组里,然后与特定的字符串比较,相等时停止读取;再然后用随机取存函数将文件指针向负方向移动刚读取的字符串那么长的字符数即定位到了你需要的位置。再然后,从这里起就修改文件了……
追问
能给个demo吗?这样子我好直接利用,谢谢了
追答
//#include "stdafx.h"//vc++6.0加上这一行.
#include <iostream>
#include <fstream>
using namespace std;
int main(void){
fstream iofp("abc.txt",ios::in | ios::out);
char x[6]="";
if(!iofp){
cout << "Open the file failure...\n";
exit(0);
}
while(iofp.read(x,5),!iofp.eof()){
if(!strcmp(x,"# $cp")) break;
iofp.seekg(-4L,ios::cur);
}
iofp.seekg(-5L,ios::cur);
iofp.write("12345",5);//从这里开始写入文件新内容
return 0;
}
展开全部
关键是看你的数据是不是采用二进制文件方式保存的,如果是的话,则可以借助结构体再配合文件指针流成员函数来操作,比如seekg,tellp,seekp成员函数,这些函数都可以文件指针自由来回移动(定位到想要的地方去)。
追问
恩,谢谢,不过我的是文本文件,我已经写好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
读/写方式打开文件,一次读要找的字符串长度的一串字符放在一个字符数组里,与特定的字符串比较,相等时停止读取;然后用随机取存函数将文件指针向负方向移动刚读取的字符串那么长的字符数即定位到了需要的位置。
FILE *fp_statfile=fopen("x264_output.txt","rb");
CString filecontent("");
//文件内容读入内存
while(!feof(fp_statfile)){
filecontent.AppendChar(getc(fp_statfile));
}
//查找X264的SSIM数值
//X264特征字符串
CString featurestr("SSIM Mean Y:");
//查找,返回字符串位置
int paraloc=filecontent.Find(featurestr);
CString parastr;
//找到了的话
if(paraloc!=-1){
//跳过特征字符串,提取5位
parastr=filecontent.Mid(paraloc+featurestr.GetLength(),5);
TRACE("%s\n",parastr);
}
fclose(fp_statfile);
C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 ——面向对象编程、泛型编程和过程化编程。最新正式标准C++于2014年8月18日公布。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一。
FILE *fp_statfile=fopen("x264_output.txt","rb");
CString filecontent("");
//文件内容读入内存
while(!feof(fp_statfile)){
filecontent.AppendChar(getc(fp_statfile));
}
//查找X264的SSIM数值
//X264特征字符串
CString featurestr("SSIM Mean Y:");
//查找,返回字符串位置
int paraloc=filecontent.Find(featurestr);
CString parastr;
//找到了的话
if(paraloc!=-1){
//跳过特征字符串,提取5位
parastr=filecontent.Mid(paraloc+featurestr.GetLength(),5);
TRACE("%s\n",parastr);
}
fclose(fp_statfile);
C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 ——面向对象编程、泛型编程和过程化编程。最新正式标准C++于2014年8月18日公布。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询