尝试从用户C++输入的代码中删除注释
Trying to delete comments from code inputed by user C++
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';
相关文章:
- 为什么示例代码访问IUnknown中已删除的内存
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 是否可以使用 C++ 中的模板减小删除代码大小
- 删除C++继承中虚拟类成员的代码重复
- 当我从下面的代码中删除关键字 virtual 时,它可以正常工作,否则会出现错误。在这里"virtual"字的意义是什么?
- 删除继承中的代码重复?
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
- 删除原子多线程代码中的容器
- 使用 ostream 变量删除代码重复
- 可视代码 删除函数括号内的空格
- Qt创建者-如何删除Clang代码模型
- 更正代码c++指针并删除
- 有没有一种预处理器的方法可以从调试符号中删除代码段
- 删除被注释掉的代码,而不是实际的赞美
- 在 cpp 中验证路径:无法使用 ASCII 代码删除特殊字符
- 旧项目中的重复代码删除策略
- 应由库或客户端代码删除已加载库中的对象实例
- 内联和死代码删除优化是否可以阻止模板实例化