string code;
cout << "Enter code\n";
getline(cin, code, '~');
size_t comment = code.find('/*');
size_t second = code.find('*/', comment);
size_t first = code.rfind('/*', comment);
code.erase(first, second - first);
cout << code << '\n';
输入
/*comment
comment*/
okay~
输出
//
okay
=============
程序会删除/* */之间的所有内容,但不会删除//。我错过了什么吗?
最佳答案
是的,您缺少两个反斜杠,
实际上,你应该使用
code.erase(first-1, second - first+2);
这是因为 string.erase(first,last)
删除了 [first, last) 范围内的字符
即它包括第一个但不包括最后一个,
注意:字符串中的第一个字符用值 0(不是 1)表示。
希望对你有帮助 有关更多信息,请参阅 this webpage
关于c++ - 试图从用户 C++ 输入的代码中删除注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26199788/