省略评论C

Omitting comments C++

本文关键字:评论      更新时间:2023-10-16

我有此片段的代码,该代码读取另一个文件并计数行数;该部分正常工作。

我要做的是省略评论行,因此该程序仅读取实际代码,而不是注释。

希望有人可以帮助我:/

#include <iostream>
#include <fstream>
#include <istream>
using namespace std;
int main() {
  int numlines = 0; 
  string line;
  ifstream myfile("wr.cpp");
  while (myfile.good ())
  {
    getline(myfile, line);
    ++numlines;  
  }
  cout << "Number of lines: "<<numlines<< endl;  
  return 0;
}

首先, while (myfile.good ())是错误的。应该是while (std::getline(myfile, line))。测试good()仅在您尝试阅读(并且已经增加计数)之后,仅测试流的状态。测试getline调用将立即测试。

之后,您只需要检查前2个字符即可查看它是否是评论行(假设///*是您的注释块,所有注释只是一行):

while (std::getline(myfile, line))
{
    std::string test = line.substr(0, 2);
    if (!(test == "//" || test == "/*"))
    {
        ++numlines;
    }
}