尝试从用户C++输入的代码中删除注释

Trying to delete comments from code inputed by user C++

本文关键字:代码 删除 注释 输入 用户 C++      更新时间:2023-10-16
string code;
cout << "Enter coden";
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)删除了 [ 第一个 , 最后一个 ( 范围内的字符

即它包括第一个但排除最后一个,

注意:字符串中的第一个字符用值 0(而不是 1(表示。

我希望这有所帮助有关更多信息,请参阅此网页

试试这个:

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';