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

Convert borrowed_iterator<reverse_view<T>> to borrowed_iterator<T>

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

我想在其中找到最后一个换行符 (\n),然后将其之前的所有 , 替换为 (space)。

我想出的代码:

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>>.

while end is a borrowed_iterator<reverse_view<T>>.

其实end的类型就是std::reverse_iterator<char*>,可以用base()来获取底层 迭代器:

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

Demo.