将borrowed_iterator<reverse_view<T>>转换为borrowed_iterator<T>。

4

我有一个缓冲区:char line[1024],其中包含从文件中读取的一行。

我想找到它中最后一个换行符(\n),然后将其前面所有的,替换为 (空格)。

我编写的代码:

const auto end = rng::find(line | rng::views::reverse, '\n'); // Find last occurrence of `\n`
rng::replace(line, end, ',', ' '); // Replace all `,` with ` ` before it

但是这样做行不通,因为line的类型是一个简单指针,而end是一个borrowed_iterator<reverse_view<T>>

1个回答

5

end是一个borrowed_iterator<reverse_view<T>>

事实上,end的类型只是std::reverse_iterator<char*>,您可以使用base()获取底层基础迭代器:

rng::replace(line, end.base(), ',', ' ');

演示。


好的,我一点头绪也没有。我记得以前试过这个,但是它不起作用,现在它可以了... 好吧,问题解决了。谢谢。编辑:也许 IntelliSense 在跟我开玩笑。 - Pirulax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接