下划线部分的内容修改为我要修改的内容,修改的数据长度不确定,
且保留其他数据不变
#include<iostream>
#include<fstream>
#include<string>
#include<regex>
using namespace std;
int main() {
string str;
int count = 0;
ifstream in("in.txt");
getline(in, str); //读取第一行文本
in.close();
regex pat("(-\\w{1,} )([\\d\\w]{1,}) "); //匹配模式
regex ip("(([01]{0,1}\\d{0,1}\\d|2[0-4]\\d|25[0-5])\\.){3}[01]{0,1}\\d{0,1}\\d|2[0-4]\\d|25[0-5]"); //存储提取到的数据
smatch matches; //存储匹配到的字符串
string replacedate[3] = { "00","11","22" }; //假设依此替换成这些数据
string result;
while (regex_search(str, matches, pat)) {
result += matches.prefix();
result += string(matches[1]) + replacedate[count++] + " "; //替换数据
str = matches.suffix(); //修改剩余的字符串
}
result += str;
result= regex_replace(str, ip, "255.255.255.255"); //替换ip
ofstream out("in.txt");
out << result << endl;
return 0;
}
我姑且理解为,你的文档是被空格分割的9个项目,那么代码如下:
#include <iostream>
int main()
{
FILE *fp;
int len;
char *ptr;
char *p;
if ((fp = fopen("你的文档.txt", "r")) == NULL)
{
printf("cannot open infile\n");
}
char data[9][32];
char buf[1024] = { 0 };
if(fgets(buf, 1024, fp) != NULL)//读取数据
{
len = strlen(buf);
ptr = strtok(buf, " ");
strcpy(data[0], ptr);
for (int i = 1; i < 9;i++)
{
ptr = strtok(NULL, " ");
strcpy(data[i], ptr);
}
}
fclose(fp);
strcpy(data[1], "\\\\192.168.1.20");
strcpy(data[3], "user");
strcpy(data[5], "dam321");
strcpy(data[7], "3");
if ((fp = fopen("你的文档.txt", "w")) == NULL)
{
printf("cannot open infile\n");
}
sprintf(buf, "%s %s %s %s %s %s %s %s %s", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8]);
fputs(buf, fp);
fclose(fp);
return 0;
}