求一个C++的小程序
我现在读入一个文本,里面有一些词语用[]括起来了,并且[]后面是nt,我想把方括号和方括号里面的内容还有nt提取出来,并且输出到另外一个文本上,这个程序该怎么写??希望高...
我现在读入一个文本,里面有一些词语用[]括起来了,并且[]后面是nt,我想把方括号和方括号里面的内容还有nt提取出来,并且输出到另外一个文本上,这个程序该怎么写??希望高手帮个忙,解决之后另外加分,谢谢!!
展开
1个回答
展开全部
下面的程序代码希望对楼主有所帮助:
/*
* 读入一个文本,里面有一些词语用[]括起来了,并且[]后面是nt,
* 把方括号和方括号里面的内容还有nt提取出来,并且输出到另外一个文本上。
*/
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
void main()
{
ifstream in("input.txt");
ofstream out("output.txt");
if (in && out)
{
char *p1;
char *p2;
char *p3;
char buf[BUFSIZ];
char tmp[BUFSIZ];
while(in.getline(buf, BUFSIZ)) // 读取文件每一行
{
p1 = buf;
while((p2 = strchr(p1, '[')) != (char *)NULL) // 找到每一个字符“[”
{
p3 = p2 + 1;
while((p3 = strchr(p3, ']')) != (char *)NULL) // 找到后续每一个字符“]”
{
if (strncmp(p3+1, "nt", 2) == 0) // 如果字符“]”后面的两个字符为“nt”,则输出
{
strncpy(tmp, p2+1, p3-p2-1);
tmp[p3-p2-1] = 'n';
tmp[p3-p2+0] = 't';
tmp[p3-p2+1] = '\0';
out << tmp;
break; // 跳过后续的字符“]”
}
p3 += 3;
}
if (p3 != (char *)NULL) // 如果上一次匹配成功,那么跳过匹配的串,重新开始
{
p1 = p3 + 3;
}
else // 否则从字符“[”后面重新开始
{
p1 = p2 + 1;
}
}
}
}
if (in)
{
in.close();
}
if (out)
{
out.close();
}
}
/*
* 读入一个文本,里面有一些词语用[]括起来了,并且[]后面是nt,
* 把方括号和方括号里面的内容还有nt提取出来,并且输出到另外一个文本上。
*/
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
void main()
{
ifstream in("input.txt");
ofstream out("output.txt");
if (in && out)
{
char *p1;
char *p2;
char *p3;
char buf[BUFSIZ];
char tmp[BUFSIZ];
while(in.getline(buf, BUFSIZ)) // 读取文件每一行
{
p1 = buf;
while((p2 = strchr(p1, '[')) != (char *)NULL) // 找到每一个字符“[”
{
p3 = p2 + 1;
while((p3 = strchr(p3, ']')) != (char *)NULL) // 找到后续每一个字符“]”
{
if (strncmp(p3+1, "nt", 2) == 0) // 如果字符“]”后面的两个字符为“nt”,则输出
{
strncpy(tmp, p2+1, p3-p2-1);
tmp[p3-p2-1] = 'n';
tmp[p3-p2+0] = 't';
tmp[p3-p2+1] = '\0';
out << tmp;
break; // 跳过后续的字符“]”
}
p3 += 3;
}
if (p3 != (char *)NULL) // 如果上一次匹配成功,那么跳过匹配的串,重新开始
{
p1 = p3 + 3;
}
else // 否则从字符“[”后面重新开始
{
p1 = p2 + 1;
}
}
}
}
if (in)
{
in.close();
}
if (out)
{
out.close();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询