删除c 或 c++源文件注释程序(c++实现)
2013-10-04 14:41
411 查看
一般实现:
状态机实现:
状态模式实现:
暂无!
#include <iostream> #include <fstream> using namespace std; int main(int argc, char* argv[]) { if (argc != 3) { cout << "argument init failed!" << endl; return 0; } ifstream infile(argv[1]); ofstream outfile(argv[2]); while (infile.good()) { char c = infile.get(); //cout << c << ' '; switch (c) { case '"' : { string str; getline(infile, str, '"'); outfile << c << str << '"'; break; } case '/' : { char nxt = infile.get(); switch (nxt) { case '/' : { string str; getline(infile, str); outfile << '\n'; //cout << str << endl; break; } case '*' : { string str; char nxt2; getline(infile, str, '*'); nxt2 = infile.get(); while (nxt2 != '/') { infile.putback(nxt2); getline(infile, str, '*'); nxt2 = infile.get(); // cout << str << endl; } break; } } break; } default : { outfile << c ; } } } infile.close(); outfile.close(); return 0; }
状态机实现:
#include <iostream> #include <fstream> using namespace std; enum Status { Code, DQuotation, Star, LineComment, ParaComment}; int main(int argc, char* argv[]) { if (argc != 3) { cout << "argument init failed!" << endl; return 0; } ifstream infile(argv[1]); ofstream outfile(argv[2]); Status status = Code; while (infile.good()) { char cur = infile.get(); cout << cur; switch (status) { case Code : { if (cur == '"') { outfile << cur ; status = DQuotation; } else if (cur == '/') { char nxt = infile.get(); if (nxt == '*') { status = ParaComment; } else if (nxt == '/') { status = LineComment; } else { outfile << cur; infile.putback(nxt); } } else { outfile << cur; } break; } case DQuotation : { outfile << cur; if (cur == '"') { status = Code; } break; } case LineComment : { if (cur == '\n') { outfile << cur; status = Code; } break; } case ParaComment : { if (cur == '*') { status = Star; } break; } case Star : { if (cur == '/') { status = Code; } else if (cur != '*') { status = ParaComment; } break; } } } infile.close(); outfile.close(); return 0; }
状态模式实现:
暂无!
相关文章推荐
- 删除C/C++文件中的注释(c实现)
- 删除某路径下的物理文件 C++实现
- 安卓系统程序文件注释说明以及删除建议(仅供参考)
- 删除C/C++中的注释-有限状态机(C语言实现)
- c++实现程序自删除
- c++:删除文件注释和将文件里面的行注释换成块注释
- 工作问题积累(九)C++:实现从注册表中获取程序安装路径并调用exe文件
- c++实现嵌入.exe文件到程序中
- 利用批处理文件实现 C#中程序自己删除自己
- C++实现:把一个文件夹里的冗余文件(.txt)删除
- c++程序中写测试log到文件的简单实现
- 批处理bat文件实现复制、删除、创建文件夹、执行程序、打开文件
- java实现创建临时文件然后在程序退出时自动删除文件
- 编写一个函数,实现把C/C++程序代码中的注释去掉,并把结果返回。
- C++删除文件夹及其子文件夹中的文件功能实现(Unicode)
- 通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件
- 编写一个C程序删除一个文件的所有注释
- 通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件。
- 第十六周C++【任务四】要求编写C++程序,读WolfSheep.nls,去除其中所有的注释,并保存到文件WS_nocomment.nls 中