删除c++程序中的注释

有四种模式:

1.“*****”,双引号里出现//或者/* */

2.// 的末尾有一个\表示下行也要注释

3./*    */

4.正文


代码如下:

#include <iostream>
#include <fstream>

using namespace std;

void StatusChange(ofstream &fout,int &pattern,char &c,char &last)
{
	switch(pattern)
	{//0-2都要判断这种模式的结束
	case 0:
		{
			fout<<c;
			if(c =='"')
				pattern = 3;
			break;
		}
	case 1:
		{
			if(last !='\\' &&c =='\n')//行注释的末尾
			{
				fout<<c;
				c = '\0';
				pattern =3;
			}
			
			break;
		}
	case 2:
		{
			if(last =='*' && c =='/')//段注释的末尾
			{
				c = '\0';
				pattern = 3;
			}
			break;
		}
	case 3://由正文部分判断4种模式的开始
		{
			//fout<<c;
			if(c =='"')
			{
				fout<<c;
				pattern = 0;
			}
			else if(c =='/')
			{
				if(last =='/')
					pattern = 1;
			}
			else if(c=='*')
			{
				if(last == '/')
					pattern = 2;
			}
			else
			{
				if(last =='/')
					fout<<last;
				fout<<c;
				pattern = 3;
			}
			break;
		}
	}
	last = c;
}

int main()
{
	ifstream fin("main1.cpp");
	ofstream fout("rst.cpp");

	if(!fin)
	{
		cout<<"no file"<<endl;
		return 1;
	}
	int pattern =3;//0,双引号模式;1,行注释模式,但是要注意\;2,段注释模式;3,其他,也就是正文
	
	char c;
	char last='\0';
	while (fin.get(c))
	{
		StatusChange(fout,pattern,c,last);
	}
		
	fin.close();
	fout.close();
	return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值