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;
}