我想使用
根据cppreference所述,奇怪的是
std::views::split
按照标记将字符串拆分,并对每个获取的子字符串调用std::from_chars
函数。
这里有一个最小可复现示例(https://godbolt.org/z/1K71qo9s4),在GCC上成功编译但在MSVC上无法编译。#include <iostream>
#include <ranges>
#include <string>
#include <charconv>
int main()
{
std::string source{"10%15%20%35"};
for ( auto i : source | std::views::split('%') )
{
int x;
std::from_chars( i.begin().base(), i.end().base(), x );
std::cout << x << ' ';
}
}
根据cppreference所述,奇怪的是
std::views::split
的行为在P2210R2中发生了变化,提供了base()
函数,其效果是
然后,根据compiler support page所述,自19.31版本起,MSVC支持等同于
return cur_
P2210R2
,因此示例应该可以正常工作。