string str;
cout << "Enter code\n";
getline(cin, str, '~');
//some loop i can't figure out
size_t nFPos = str.find('//');
size_t second = str.find('\n', nFPos);
size_t first = str.rfind('\n', nFPos);
str.erase(first, second - first);
//end unknown loop
INPUT
码
//注释
// COMMENT
代码〜
输出
码
// COMMENT
码
我不能为我的生活弄清楚我应该使用什么样的循环来删除以//开头的所有评论。它只删除第一条评论并绕过其他所有评论。
我已经尝试了,同时,一会儿,如果
我无法弄清楚
答案 0 :(得分:1)
你应该使用
while(true)
{
size_t nFPos = str.find('//');
if(nFPos + 1)
{
size_t second = str.find('\n', nFPos);
size_t first = str.rfind('\n', nFPos);
str.erase(first, second - first);
}
else
{
break;
}
}
如上所述Here
执行std::find()
时,如果未找到匹配项,则函数返回string::npos
定义为
static const size_t npos = -1;
因此,只要找到匹配项,它就会返回第一场比赛的第一个字符的位置,(因此它将是非-1
)。
如果无法找到任何匹配项,则会返回-1
并且else
部分将被执行(因为-1+1=0
和0
相当于{{ 1}}),把我们带出循环