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

时间:2014-10-19 11:41:09

标签: c++ file-io syntax ifstream

我在检测到两个' //'时遇到了一些麻烦。作为一个字符,然后删除第一个' /'直到行尾(我猜这个/ n在这里使用)。

{
    ifstream infile;

    char comment = '//';

    infile.open("test3.cpp");

    if (!infile)
    {
        cout << "Can't open input file\n";
        exit(1);
    }

    char line;
    while (!infile.eof())
    {
        infile.get(line);

        if (line == comment)
        {

            cout << "found it" << endl;
        }



    }

    return 0;
}

在test3.cpp文件中有三条注释,因此有3批&#39; //&#39;。但是我无法检测到双斜杠并且只能检测到一个/哪个会影响c ++文件的其他部分,因为我只想从注释的开头删除到该行的末尾?

1 个答案:

答案 0 :(得分:0)

  

我在检测到两个&#39; //&#39;时遇到了一些麻烦。作为一个char

那是因为//不是一个角色。它是两个字符的序列。字符序列称为字符串。您可以使用双引号创建字符串文字:"//"

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

此外:

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

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

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