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

标签 c++ string visual-c++ erase

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/

相关文章:

c++ - std::ofstream - 没有超过 1023 的缓冲字符串(即时刷新)

c - 字符串操作,以下函数的作用是什么?

ruby - 在 ruby​​ 中解析一个非常特殊的字符串结构(棒球数据)

Android - 在 XML(字符串数组)文件中搜索项目

c++ - Visual Studio的C4345警告错了吗?

C++ TCP 服务器比较字符串失败

c++ - 体系结构 x86_64 的 undefined symbol : Xcode 5 Issues

python - 无法在 Windows 10 上 pip 安装 mysqlclient 或 cython 或 lxml

c++ - 如何检测 VS C++ 编译器是否支持 C++11?

c++ - 如何初始化const循环引用成员