如何去除c++文件中的注释

如何去除c++文件中的注释

代码

[Copy to clipboard] [ - ]
CODE:
#!/bin/perl -w
my $file;
while(<>)
{
        $file .=$_;
}
$_=$file;
s{(^(//).*)|(^(/\*)(\w|\s)*(\*/)$)}{}g;
print $_;

测试数据
//asfsdfsdf
ffff
/*adsfasdfasdf*/
/*asdfasdfsdaf

asdfasdfsdf*/
eeeeee
ffffff

结果是什么都没有显示出来,请问?
有点复杂啊,应该用多行正则吧s{}{}mg
多谢wellfroggy 了 :)
搞定
my $file;
while(<>)
{
        $file .=$_;
}
print $file;
$file=~s{(^(//).*)|(^(/\*)(\w|\s)*(\*/)$)}{}mg;
print $file;
我的代码,可以用,你看看

open FF, "file.txt";

$str=join "",<FF>;

$str=~s!^//.*!!;

$str=~s!/\*.*\*/!!s;

print $str;

不过不适合长程序~
难得有人谢我……哈哈
完全不正确

int main()//comment
{
  printf("hello\n"); /*hello*/
}

这两个注释去不掉
#!/usr/bin/perl -w
my $file;
while(<>)
{
        $file .=$_;
}
print $file;
$file=~s{((//).*)|((/\*)[^*]*(\*/))}{}mg;
print $file;

改为这样勉强可以,但是对于多行注释还是没有解决
$file =~ s#(\/\/.*\n)|(\/\*.*\*\/)##g;
这样行么~
还有问一下,如果单行处理,为什么不放到while里面,
拿到外面来是处于什么考虑?
我觉得在while中性能上优于在while外

在while外需要的内存比较多,因为需要记录整个文件的内容