剔除编译可通过的C++程序COMMENT
来源:互联网 发布:数据泄密安全 编辑:程序博客网 时间:2024/05/21 22:51
忙里偷闲发现代码好乱,重新写了下去除COMMENT的程序,应该可以算是比较完美的版本.凡是能编译通过的,经过测试大部分都可以正确运行.
代码如下:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string load_file(string sPath)
{
string s;
string sWhole;
ifstream in(sPath.c_str());
while (getline(in, s))
{
sWhole += s + "/n";
}
return sWhole;
}
string comment_out(string sSource)
{
int iState = 0;
int i = 0;
char cTmp;
char cBuffer[16] = {0};
string sOut;
while (i <= sSource.length())
{
cTmp = sSource[i];
switch (iState)
{
case 0:
{
if (cTmp == '/')
{
iState = 1;
cBuffer[0] = cTmp;
}
else
{
if (cTmp == '"')
{
iState = 5;
sOut += cTmp;
}
else
{
if (cTmp == '/'')
{
iState = 6;
sOut += cTmp;
}
else
{
sOut += cTmp;
}
}
}
break;
}
case 1:
{
if (cTmp == '/')
{
iState = 2;
}
else
{
if (cTmp == '*')
{
iState = 3;
}
else
{
iState = 0;
sOut += cBuffer[0];
sOut += cTmp;
}
}
break;
}
case 2:
{
if (cTmp == '/n')
{
iState = 0;
sOut += '/n';
}
break;
}
case 3:
{
if (cTmp == '*')
{
iState = 4;
}
break;
}
case 4:
{
if (cTmp == '/')
{
iState = 0;
}
else
{
iState = 3;
}
break;
}
case 5:
{
if (cTmp == '"')
{
iState = 0;
sOut += cTmp;
}
else
{
if (cTmp == '//')
{
if (sSource[i+1] == '/"')
{
sOut += '//';
sOut += '"';
i++;
}
else
{
sOut += cTmp;
}
}
else
{
sOut += cTmp;
}
}
break;
}
case 6:
{
if (cTmp == '/'')
{
iState = 0;
sOut += cTmp;
}
else
{
if (cTmp == '//')
{
if (sSource[i+1] == '/'')
{
sOut += '//';
sOut += '/'';
i++;
}
else
{
sOut += cTmp;
}
}
else
{
sOut += cTmp;
}
}
break;
}
}
i++;
}
return sOut;
}
int main(int argc, char* argv[])
{
string s;
s = load_file("ComOut.cpp");
cout << comment_out(s) << endl;
return 0;
}
- 剔除编译可通过的C++程序COMMENT
- 一个自动剔除COMMENT的C++程序
- 关于字符串的剔除重复重新排序的C程序
- Android上通过gcc编译普通的C程序
- 写好程序的comment
- [C++]pragma comment的使用
- cl编译控制台可调式的程序
- cl编译控制台可调式的程序
- QT编译可移植的程序
- 使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
- 使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
- 打造SublimeText成为移动化可编译标准C程序的编辑器
- Linux通过vi编写C程序,通过gcc编译
- git commit -m 'comment' 遇到 'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- comment.c
- 调试C的简单过程,查找编译通过之后的程序错误
- 《C++Primer》读书笔记之---Windows下通过命令行窗口编译运行C++程序的尝试
- C 程序的可移植性
- 《C++高级编程》之--利用模板编写通用代码
- 用什么开源工具完成ETL啊?
- 喊苦喊累的程序员们,看看日本人是怎么加班的。
- Asp.Net页面模型---自定义处理程序
- md5加密类
- 剔除编译可通过的C++程序COMMENT
- Java io 输入输出流(三)
- Java io 输入输出流(四)
- Java io 输入输出流(五)
- 总结
- Java io 输入输出流(六)
- Javascript添加可显示/隐藏div--测试成功
- 利用正则表达式自动给Email地址和Url加上连接
- 在用户控件中常用到的,图片,背景图,相对链接出错问题,用ResolveUrl