C++_homework_EraseComment
顾名思义就是删除程序中的注释,不清楚fsm的机制,完全是自己的思路做。
开头先读取一个字符确定是否到文件结尾,如果读取成功,是换行的话就换行,并继续读取,不是的话,用putback放回缓冲区,并整行读取。
有两个状态开关(bool 0为关),相互制约,state开时,说明已经遇到/*,要遇到*/才会关闭,flag开时,说明遇到",再遇到"才会关闭接下来均是字符串内容,不用考虑注释。
state开时,posa表示/*的/的位置,如果一行结束也没有遇到*/,那么从/*开始删除到结束,并且将posa赋值0。下一行时同样操作。
#include <iostream>
#include <string>
#include <fstream>
using namespace std; int main(int argc,char* argv[])
{
ifstream fin;
ofstream fout;
fin.open(argv[]);
fout.open(argv[]);
char c;
bool flag=,state=;
int posa=-,posb=-;
while(fin.get(c)){
if(c=='\n') fout<<endl;
else{
fin.putback(c);
string ss;
getline(fin,ss); for(int i=;i<ss.size();i++){
if(state==false){
if(ss[i]=='"'){
if(flag==) flag=true;
else flag=false;
} if(flag==&&ss[i]=='/'){
if(ss[i+]=='/')
ss.erase(i,ss.size()-i);
if(state==false&&ss[i+]=='*'){
posa=i;
state=true;
}
} }
if(state==true&&ss[i]=='*'){
if(ss[i+]=='/'){
posb=i+;
state=false;
}
}
} if(state==true){
ss.erase(posa,ss.size()-posa);
posa=;
}
else if(state==false&&ss.size()&&posa!=-){
ss.erase(posa,posb-posa+);
posa=posb=-;
} fout<<ss<<endl;
} }
fout.close();
fin.close();
return ;
}
关于文件操作和Ubuntu常用命令和argc&argv的问题,(可能会)另开一篇讲。
C++_homework_EraseComment的更多相关文章
随机推荐
- [Windows Server 2008] 查看ASP详细错误信息方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:查看IIS下 ...
- Java_Web三大框架之Struts2
今天正式接触Java_Web三大框架之Struts2框架.对于初学者来说,先来了解什么是框架技术: 一.“框架技术”帮我们更快更好地构建程序: 1.是一个应用程序的半成品 2.提供可重用的公共结构 3 ...
- linux下vim命令汇总
一. 进入vi的命令 vi filename : 打开或新建文件,并将光标置于第一行首 vi +n filename : 打开文件,并将光标置于第n行首 vi + filename : 打开文件,并将 ...
- Resetting the SMC & PRAM
Resetting the SMC & PRAM on portables with a battery you should not remove on your own 1. Shut d ...
- 人工智能时代,你为什么一定要学Python?
Python岗位年薪至少在10-20w之间,而且除了北.上.广.深外,杭州和合肥等二.三线城市的待遇正在与一线城市持平.未来,无论你身处何地,都能享受到人工智能.Python“带来的“市场红利”. P ...
- ajax 禁用按钮防止重复提交
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- JavaScript day3(转义符)
转义符(escape character) 当你定义一个字符串必须要用单引号或双引号来包裹它.那么当你需要在字符串中使用一个: " 或者 ' 时该怎么办呢? 在 JavaScript 中可 ...
- lua_note_01_lua介绍
1. lua 1. lua 1.1. lua介绍 1.2. Lua 特性 1.3. 特点 1.4. Lua 应用场景 1.5. 环境搭建 1.6. VS lua 1.1. lua介绍 Lua 是一种轻 ...
- [数据结构]C#顺序表的实现
在数据结构的学习当中,想必C++可能是大家接触最多的入门语言了 但是C#的数据结构却很少看到,今天我写了一个C#顺序表的顺序存储结构 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是 ...
- 洛谷P1055 ISBN号码【字符数组处理】
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括 99 位数字. 11 位识别码和 33 位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号 ...