如何检查行中的第一个字符是#(评论的开头)

veh*_*zzz 3 c++ stl

到目前为止,我一直在遵循这个惯例:

std::string line;
while(std::getline(in,line)) 
{
    if(line.size() && line[0] =='#')
      continue;
    /* parse text*/
}
Run Code Online (Sandbox Code Playgroud)

明显的缺点是,在前导空格的情况下,注释可能不会从第一个字符开始.

处理这类事情的好方法是什么?

小智 11

简单增强:您可能希望使用line.find_first_not_of("")来获取第一个非空格,然后检查是否为'#'.这也将涵盖零长度的情况.类似这样的片段:

  found= line.find_first_not_of(" \t");

  if( found != string::npos)
  {
    if( line[found] == '#')
      continue;
  }
Run Code Online (Sandbox Code Playgroud)

更多信息