Description
将C程序代码中的双斜杠注释去掉。
Input
输入数据中含有一些符合C++语法的代码行。需要说明的是,为了方便编程,规定双斜杠注释内容不含有双引号,源程序中没空行。保证每行不超过1000个字符
Output
输出不含有双斜杠注释的C++代码,除了注释代码之外,原语句行格式不变。
Sample Input Copy
//====================== // simplest program //====================== #include using namespace std; //---------------------- int main(){ cout<<”hello world!\n”; }//---------------------
Sample Output Copy
#include using namespace std; int main(){ cout<<”hello world!\n”; }
HINT
本题每一行数据的输出末尾不含有多余的空格字符!!!
方法: 使用以下函数高效达成结果 string &erase(int p, int n); //删除p开始的n个字符,返回修改后的字符串 size_type find( const basic_string &str, size_type index ); //返回str在字符串中第一次出现的位置(从index开始查找),如果没找到则返回string::npos(即-1);
下面是代码实现:
#include<bits/stdc++.h> using namespace std; #define ios ios::sync_with_stdio(false); cin.tie(NULL); //const int N = 1e6+10; int main() { string s; while(getline(cin,s)) { int len = s.size(); int str=len; str = s.find("//",0);//没找到返回-1; if(str!=-1) { s.erase(str,len-str); len = s.size(); if(s[len-1]==' ') { int cnt = len; for(int i=len-1; i>=0; i--) { if(s[i]==' ') cnt--; else break; } s.erase(cnt,len-cnt);//123 // } cout<<s; } else { if(s[len-1]==' ') { int cnt = len; for(int i=len-1; i>=0; i--) { if(s[i]==' ') cnt--; else break; } s.erase(cnt,len-cnt);//123 // } cout<<s; } if(s.size()) cout<<endl;//如果只输入“//”或者“ ”则不换行 } return 0; }