红框中为未考虑情况
// 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