gpt4 book ai didi

c++ - 修剪空格/转换迭代器

转载 作者:行者123 更新时间:2023-11-30 03:05:28 25 4
gpt4 key购买 nike

我想编写两个单行函数来修剪字符串左右两侧的空格。左侧没问题:

void trimLeft(string &s) {
s.erase(s.begin(), find_if(s.begin(), s.end(), (int (*)(int))isgraph));
}

但是当我在右侧尝试类似的操作时:

void trimRight(string &s) {
s.erase(find_if(s.rbegin(), s.rend(), (int (*)(int))isgraph), s.end());
}

我有一些编译器错误。问题是我必须将 reverse_iterator(由 find_if 返回)转换为普通迭代器。如何做到这一点?

最佳答案

您可以使用 base() 成员函数从它的 reverse_iterator 中恢复底层迭代器。

void trimRight(string &s) {
s.erase(find_if(s.rbegin(), s.rend(), (int (*)(int))isgraph).base(), s.end());
}

关于c++ - 修剪空格/转换迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701312/

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