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';
INPUT
/*comment
comment*/
okay~
输出
//
okay
=============
程序删除/ * * /之间的所有内容,但不会删除/ /。我错过了什么吗?
答案 0 :(得分:3)
是的,你错过了两个反斜杠,
实际上,您应该使用
code.erase(first-1, second - first+2);
这种情况正在发生,因为string.erase(first,last)
删除了[first,last)范围内的字符
即。它包括第一个但不包括最后一个,
注意:字符串中的第一个字符用值0表示(不是1)。
我希望有所帮助 有关更多信息,请参阅this webpage
答案 1 :(得分:0)
试试这个:
size_t comment = code.find("/*");
size_t second = code.find("*/", comment); // here it returns the index from where `*/` starts so you should also delete these two charater that why i added 2 in erase function.
size_t first = code.rfind("/*", comment);
code.erase(first, (second - first)+2);
cout << code << '\n';