从文件中的某个点删除到行尾

Deleting from a certain point in a file to the end of the line?

本文关键字:删除 文件      更新时间:2023-10-16

我在检测两个"//"作为字符,然后从第一个"/"删除到行末时遇到了一些问题(此处使用im猜测/n)。

{
    ifstream infile;
    char comment = '//';
    infile.open("test3.cpp");
    if (!infile)
    {
        cout << "Can't open input filen";
        exit(1);
    }
    char line;
    while (!infile.eof())
    {
        infile.get(line);
        if (line == comment)
        {
            cout << "found it" << endl;
        }

    }
    return 0;
}

在test3.cpp文件中有三个注释,因此有三个"//"。但我无法检测到双斜杠,只能检测到一个/,这将影响c++文件的其他部分,因为我只想从注释的开头删除到行的末尾?

我在检测两个"//"作为字符时遇到了一些问题

这是因为//不是一个字符。它是由两个字符组成的序列。一个字符序列被称为字符串。您可以制作带有双引号的字符串文字:"//"

一个简单的解决方案是将流中的当前输入字符与字符串"//"的第一个字符'/'进行比较。如果匹配,则将流中的下一个字符与搜索字符串中的第二个字符进行比较。如果你在一排中找到两个'/',你就找到了你的对手。或者,你可以聪明地将整行读取到std::string中,并使用成员函数来查找它

还有:

while (!infile.eof())
{
    infile.get(line);
    // using line without testing eof- and badbit

这段代码是错误的。在读取流并处理输入之前,您测试eofbit

您为line变量选择的名称有点令人困惑,因为它不包含全部内容。行,但只有一个字符。