求一个C++的小程序

我现在读入一个文本,里面有一些词语用[]括起来了,并且[]后面是nt,我想把方括号和方括号里面的内容还有nt提取出来,并且输出到另外一个文本上,这个程序该怎么写??希望高... 我现在读入一个文本,里面有一些词语用[]括起来了,并且[]后面是nt,我想把方括号和方括号里面的内容还有nt提取出来,并且输出到另外一个文本上,这个程序该怎么写??希望高手帮个忙,解决之后另外加分,谢谢!! 展开
 我来答
xniren
2008-06-17 · TA获得超过1154个赞
知道小有建树答主
回答量:554
采纳率:100%
帮助的人:521万
展开全部
下面的程序代码希望对楼主有所帮助:

/*
* 读入一个文本,里面有一些词语用[]括起来了,并且[]后面是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();
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式