给定一个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