gpt4 book ai didi

c++ - 删除所有以//c++ 开头的注释行

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:07 24 4
gpt4 key购买 nike

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

输入

代码

//评论

//评论

代码~

输出

代码

//评论

代码

我这辈子都想不出我应该使用什么样的循环来删除所有以//开头的评论。它只是删除第一条评论并绕过其他所有内容。

我已经尝试了 for、while、do while 和 if

我想不通

最佳答案

你应该使用

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=00 等同于 false ),让我们跳出循环

关于c++ - 删除所有以//c++ 开头的注释行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26210292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com