从txt文件中删除评论

时间:2019-10-13 10:11:44

标签: c++

我有一段代码需要调整,以便在复制时用//删除所有行。我尝试这样做:

f (prevkar == '/' &&kar!= '/' )
            uitput.put ('/');

但是它似乎没有用。

output.open ("output.txt",ios::out);
kar = input.get ( );
while ( ! input.eof ( ) )
{
    //this part needs to be adjusted
    output.put (kar);
    kar = input.get ( );
}

1 个答案:

答案 0 :(得分:0)

您可以将其更改为以下内容:(假设您输入的内容为空终止)

bool linebreak=false, putknel=false;
while (kar!='\0')
{

    if(linebreak)
    {
        if(kar=='\n')linebreak=false;
    }
    if(kar!='/')
    {
        output.put (kar);
        if(putknel)
        {
            putknel=false;
            output.put('/');
        }
    }
    else 
    {
        if(!putknel)putknel=true;
        else 
        {
            putknel=false;
            linebreak=true;
        }
    }
    kar = input.get ( );
}

但这可能有点乏味。

如果使用正则表达式,它将更加容易。

只需将所有匹配//[^\r\n]*\r\n的内容替换为空字符串即可。