C++如何在文件中根据字符串匹配定位到相应位置

即用fstream打开文件,然后查找文件中是否有某一特定字符串,找到后将指针定位在该字符串的位置,关键是要定位,因为我要从这个位置处往后修改文件... 即用fstream打开文件,然后查找文件中是否有某一特定字符串,找到后将指针定位在该字符串的位置,关键是要定位,因为我要从这个位置处往后修改文件 展开
 我来答
White_MouseYBZ
2015-01-26 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6567万
展开全部
好办得很!读/写打开文件,一次读要找的字符串那么长的一串字符放在一个字符数组里,然后与特定的字符串比较,相等时停止读取;再然后用随机取存函数将文件指针向负方向移动刚读取的字符串那么长的字符数即定位到了你需要的位置。再然后,从这里起就修改文件了……
追问
能给个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;
}
仙戈雅3n
2015-01-26 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:890万
展开全部
关键是看你的数据是不是采用二进制文件方式保存的,如果是的话,则可以借助结构体再配合文件指针流成员函数来操作,比如seekg,tellp,seekp成员函数,这些函数都可以文件指针自由来回移动(定位到想要的地方去)。
追问
恩,谢谢,不过我的是文本文件,我已经写好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ningai007
推荐于2016-09-05 · TA获得超过1.6万个赞
知道大有可为答主
回答量:1890
采纳率:0%
帮助的人:300万
展开全部
读/写方式打开文件,一次读要找的字符串长度的一串字符放在一个字符数组里,与特定的字符串比较,相等时停止读取;然后用随机取存函数将文件指针向负方向移动刚读取的字符串那么长的字符数即定位到了需要的位置。
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日公布。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式