C++去除程序注释实现

红框中为未考虑情况

// 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

dstfile

终端输出

C++去除程序注释实现

时间: 2024-12-17 05:06:39

C++去除程序注释实现的相关文章

使用Visual Assistant X创建C程序注释模板

本文将讲解C程序注释模板的使用背景.创建方法,并在结束时进行总结. 1.使用背景 在项目开发过程中,为方便组内其他成员能够快速学习自己编写的代码,需要对自己写的函数添加注释.在正规的软件开发流程中,一个标准的函数及其注释可能如下所示. /************************************************************************ Function: ParseBinFile Description: 解析Bin文件数据 Parameter: b

写好程序注释的十三条建议(转)

写好程序注释的十三条建议 1. Comment each level(每个级别的注释有统一的风格) 注释每一个代码块,并且在各个级别的代码块上,要使用统一的注释方法.例如: 对于类,应包含简单的描述.作者以及最近的更改日期 对于方法,应包含目的的描述.功能.参数以及返回值 使用统一的注释规则对于一个团队是非常重要的.当然,更加推荐使用注释的约定和工具(例如,C#的XML或Java的Javadoc),它们会是注释变得更加容易. 2. Use paragraph comments(对段落注释) 将代

Java基础复习2:程序注释、标识符、关键字

一.程序注释 Java程序的注释一共分为三种:单行注释.多行注释以及文档注释. 单行注释 Java中单行注释是使用//来表示.//后面的语句都是注释内容.程序不会执行. 多行注释 Java中的多行注释以/*开头,以*/结尾.中间的内容都是注释内容.3.文档注释 文档注释其实是多行注释的变种.以/**开头,以*/结尾.中间的注释内容.可以通过Java命令提取出来显示成文档.请看下面实例: /** *这是一个Java入门程序 *作者:静秋 *时间:2018-11-02 *这是一个文档注释 */ /*

Java自学笔记(第一天)安装Java8---配置运行环境---编写&quot;hello world&quot;程序---注释

(1)jvm,jre,jdk分别是什么: jvm:Java Virtual Machine(Java虚拟机) jre:java runtime environment,就是java程序的运行环境 jdk:JDK(Java Development Kit) 是 Java 语言的软件开发工具包 jdk中包含jre,jre中包含jvm (2)下载,安装jdk8: 用命令提示符试运行jdk目录下bin目录下的javac.exe jre目录下的bin目录中没有javac.exe文件 java8在windo

程序注释的原则

写好注释的几条原则: 1.假设读者的语言水平跟你一样(比如说,不要去解释“什么是字符串,也别去解释什么是赋值语句”). 2.不要注释那些显而易见的事情.比如下面这条注释是毫无意义的: count=count+1  #add one to count 3.很多程序员会在代码中写上一些以"TODO"或"FIXME"开始的注释,目的是为了提醒他们回来编写或清理一些未解决的问题. 4.如果你在编写某段程序时需要使劲思考的话,那么就应该编写注释,以便别人不会再在这个地方绞尽脑

程序注释

1.注释的坏处 注释阐述的行可能与代码执行的行为不一致. 2.要用到注释的地方 法律声明: 代码的意图: 警告,: 信息的注释: 阐释,对方法的参数进行描述: 3.注释注意的地方 写注释时,最好要把注释写清楚,能在一个地方就能把目的写明白. 注释时只提供有用的信息 不要出现位置标记. 不要出现日志注释,该注释的信息应该交给版本控制器. 不要出现注释的代码 显而易见的地方就不要加注释 4.注释代码时,用/** 注释的句子 */

vs2015安装VAssistX以后,去除中文注释会有红色下划线方法

---恢复内容开始--- 环境:Visual Studio 2015 问题:代码中出现中文后会带下划线,不舒服-----解决办法. 1.安装完Visual Assist X后会在VS2015的菜单栏出现VAssistX这个选项,单击展开,选择Visual AssistX Options 2.把如图所示的勾去掉,解决. 一个Visual AssistX破解版本,亲测vs2015可用简直完美 ---恢复内容结束---

(五)NS3中示例:网桥模块示例csma-bridge.cc程序的注释

(五)NS3中示例:网桥模块示例csma-bridge.cc程序的注释 1.Ns3 bridge模块中csma-bridge.cc示例程序注释 // Network topology // // n0 n1 // | | // ---------- // | Switch | // ---------- // | | // n2 n3 // // // - CBR/UDP flows from n0 to n1 and from n3 to n0 恒定的比特流从n0转发到n1,从n3转发到n0

微信小程序视图层WXS_注释

微信小程序视图层WXS_小程序注释 微信小程序在WXS 主要有 3 种注释的方法. 示例代码: <!-- wxml --> <wxs module="sample"> // 方法一:单行注释 /* 方法二:多行注释 */ /* 方法三:结尾注释.即从 /* 开始往后的所有 WXS 代码均被注释 var a = 1; var b = 2; var c = "fake"; </wxs> 上述例子中,所有 微信小程序 的 WXS 代码均