-
Notifications
You must be signed in to change notification settings - Fork 544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
std::string 使用迭代器,删除\r的时候,没办法删除干净 #12
Comments
remove_if用法错误,正确写法是:
src.erase(remove_if(src.begin(), src.end(), functor), src.end());
或者用cpp20的std::erase_if:
erase_if(src, functor);
无法顺畅的大口呼吸,是活着的最好证明
…---原始邮件---
发件人: ***@***.***>
发送时间: 2022年7月20日(周三) 中午12:14
收件人: ***@***.***>;
抄送: ***@***.***>;
主题: [parallel101/course] std::string 使用迭代器,删除\r的时候,没办法删除干净 (Issue #12)
`std::string src = "\r\nabc\r\r\r\r\r\r\r\r123456\nABCDEF\r\n\r\n\r\r\r\r";
std::remove_if(src.begin(), src.end(), [](const char& c) {
return c == '\r';
});
//我认为应该是 \nabc123456\nABCDEF\n\n //实际却是:src = "\nabc123456\nABCDEF\n\n\nABCDEF\r\n\r\n\r\r\r\r"
`
最近在学习彭老师的课程,学到了 string其实也有迭代器。然后就找了一个remove_if函数试了一下。
请彭老师帮忙解答一下。这是为什么呢?
我的电脑是win10 64位, 使用的是virtual stdio 2022 preview
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
remove_if并不会缩短string的长度,他只会把没有删除的元素“移动”到靠头的位置,剩余的元素仍然存在,需要用erase或resize调整大小才能真正删除。
无法顺畅的大口呼吸,是活着的最好证明
…---原始邮件---
发件人: ***@***.***>
发送时间: 2022年7月20日(周三) 中午12:14
收件人: ***@***.***>;
抄送: ***@***.***>;
主题: [parallel101/course] std::string 使用迭代器,删除\r的时候,没办法删除干净 (Issue #12)
`std::string src = "\r\nabc\r\r\r\r\r\r\r\r123456\nABCDEF\r\n\r\n\r\r\r\r";
std::remove_if(src.begin(), src.end(), [](const char& c) {
return c == '\r';
});
//我认为应该是 \nabc123456\nABCDEF\n\n //实际却是:src = "\nabc123456\nABCDEF\n\n\nABCDEF\r\n\r\n\r\r\r\r"
`
最近在学习彭老师的课程,学到了 string其实也有迭代器。然后就找了一个remove_if函数试了一下。
请彭老师帮忙解答一下。这是为什么呢?
我的电脑是win10 64位, 使用的是virtual stdio 2022 preview
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
感谢大佬解答 看了教程https://en.cppreference.com/w/cpp/algorithm/remove 之后,才恍然大悟。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
最近在学习彭老师的课程,学到了 string其实也有迭代器。然后就找了一个remove_if函数试了一下。
请彭老师帮忙解答一下。这是为什么呢?
我的电脑是win10 64位, 使用的是virtual stdio 2022 preview
The text was updated successfully, but these errors were encountered: