8

对于以下代码

#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 的作用完全相同所以我确信这是故意的,但我想知道为什么。

4

0 回答 0