从给定的C/C++程序中删除注释

给定一个C/C++程序,从中删除注释。 我们强烈建议您尽量减少浏览器数量,并首先自己尝试。 其思想是维护两个标志变量,一个用于指示单行注释已启动,另一个用于指示多行注释已启动。设置标志后,我们会查找注释的结尾,并忽略开头和结尾之间的所有字符。 下面是C++实现上述思想。

null

C

// C++ program to remove comments from a C/C++ program
#include <iostream>
using namespace std;
string removeComments(string prgm)
{
int n = prgm.length();
string res;
// Flags to indicate that single line and multiple line comments
// have started or not.
bool s_cmt = false ;
bool m_cmt = false ;
// Traverse the given program
for ( int i=0; i<n; i++)
{
// If single line comment flag is on, then check for end of it
if (s_cmt == true && prgm[i] == '' )
s_cmt = false ;
// If multiple line comment is on, then check for end of it
else if (m_cmt == true && prgm[i] == '*' && prgm[i+1] == '/' )
m_cmt = false ,  i++;
// If this character is in a comment, ignore it
else if (s_cmt || m_cmt)
continue ;
// Check for beginning of comments and set the appropriate flags
else if (prgm[i] == '/' && prgm[i+1] == '/' )
s_cmt = true , i++;
else if (prgm[i] == '/' && prgm[i+1] == '*' )
m_cmt = true ,  i++;
// If current character is a non-comment character, append it to res
else res += prgm[i];
}
return res;
}
// Driver program to test above functions
int main()
{
string prgm = "   /* Test program */ "
"   int main()  "
"   {           "
"      // variable declaration "
"      int a, b, c;    "
"      /* This is a test  "
"          multiline     "
"          comment for   "
"          testing */      "
"      a = b + c;       "
"   }           " ;
cout << "Given Program " ;
cout << prgm << endl;
cout << " Modified Program " ;
cout << removeComments(prgm);
return 0;
}


输出

Given Program   /* Test program */   int main()   {      // variable declaration      int a, b, c;      /* This is a test          multiline          comment for          testing */      a = b + c;   } Modified Program   int main()   {             int a, b, c;          a = b + c;   }

本文由Sachin Gupta撰稿。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享