对于以下代码:
#include <iostream>
#include <string>
#include <ranges>
int main()
{
std::string s = " text ";
auto sv = std::ranges::views::split(s, ' ');
std::cout << std::ranges::distance(sv.begin(), sv.end());
}
输出为 2。最后一个分隔符之后的空子范围不存在于输出范围中。
这似乎不一致,因为如果输入范围中出现分隔符,我预计N+1
输出范围中会有子范围。N
为什么不是这样?
请注意 range-v3 的作用完全相同,所以我确信这是故意的,但我想知道为什么。