码迷,mamicode.com
首页 > 编程语言 > 详细

C++去除程序注释实现

时间:2014-05-10 03:34:19      阅读:523      评论:0      收藏:0      [点我收藏+]

标签:c++取出程序中的注释

bubuko.com,布布扣

红框中为未考虑情况

// test_max.cpp : 定义控制台应用程序的入口点。
//去除文件srcfile中的注释

#include "stdafx.h"
#include <iostream>
#include<string>
#include<fstream>

using namespace std;

int main()
{
	string srcfilename;
	string dstfilename;
	string temp,str,strn;
	int a,b;
	bool flag=false;

	srcfilename="F:\\workspace\\JavaPrj\\test.cpp";
	dstfilename="F:\\workspace\\JavaPrj\\test1.cpp";
	strn="\n";
	
	ifstream infile(srcfilename.c_str());
	ofstream outfile(dstfilename.c_str());

	cout<<"文件"<<"\""<<srcfilename<<"\""<<"的注释为:"<<endl;
	while(getline(infile,temp))
	 {
		 a=temp.find("//");
		 b=temp.find("/*");
		 
		 if(flag==false)														//不在注释/*  */体中
		 {
			 if(a==-1 && b==-1)
			 {
				 if(temp.find_first_not_of(" ")!=-1 && temp!="")							//不为空
				 {
					temp=temp+"\n";
					outfile.write(temp.c_str(),temp.length());
				 }
			 }
			 else if(a!=-1 && b!=-1)
			 {
				 if(a<b)															// //在/*的前面
				 {
					 str=temp.substr(a);
					 temp.assign(temp.c_str(),a);
					 if(temp.find_first_not_of(" ")!=-1 && temp!="")
					 {
						outfile.write(temp.c_str(),a);			//左串写入文档
						outfile.write(strn.c_str(),strn.length());
					 }
					cout<<str<<endl;									//右串为注释输出
				 }
				 else
				 {
					 str=temp.substr(b);
					 temp.assign(temp.c_str(),b);
					 if(temp.find_first_not_of(" ")!=-1 && temp!="")
					 {
						outfile.write(temp.c_str(),b);			//左串写入文档
						outfile.write(strn.c_str(),strn.length());
					 }
					cout<<str<<endl;									//右串为注释输出
					flag=true;
				 }
			 }
			 else if(a!=-1 && b==-1)
			 {
				str=temp.substr(a);
				temp.assign(temp.c_str(),a);

				if(temp.find_first_not_of(" ")!=-1 && temp!="")
				{
					outfile.write(temp.c_str(),a);				//左串写入文档
					outfile.write(strn.c_str(),strn.length());
				}
				cout<<str<<endl;										//右串为注释输出
			 }
			 else
			 {
				str=temp.substr(b);
				temp.assign(temp.c_str(),b);
				if(temp.find_first_not_of(" ")!=-1 && temp!="")
				{
					outfile.write(temp.c_str(),b);				//左串写入文档
					outfile.write(strn.c_str(),strn.length());
				}
				cout<<str<<endl;										//右串为注释输出
				flag=true;
			 }
		 }
		 else
		 {
			 a=temp.find("*/");
			 if(a==-1)
			 {
				cout<<temp<<endl;
			 }
			 else
			 {
				str=temp.substr(a+2);
				temp.assign(temp.c_str(),a);
				temp=temp+"*/";
				if(str.find_first_not_of(" ")!=-1 && str!="")
				{
					outfile.write(str.c_str(),a);					//右串写入文档
					outfile.write(strn.c_str(),strn.length());
				}
				cout<<temp<<endl;									//左串为注释输出
				flag=false;
			 }
		 }
	 }

	system("pause");
    return 0;
}

srcfile

bubuko.com,布布扣

dstfile

bubuko.com,布布扣

终端输出

bubuko.com,布布扣

C++去除程序注释实现,布布扣,bubuko.com

C++去除程序注释实现

标签:c++取出程序中的注释

原文地址:http://blog.csdn.net/cjc211322/article/details/25422877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!