我有一个字符串,其中包含以,
字符分隔的数字序列。要将序列中的值读入数组,我创建了 GCC 10 拒绝编译的以下代码:
#include <ranges>
#include <string_view>
#include <charconv>
#include <array>
template<std::size_t Sz>
bool to_bytes(std::array<std::uint8_t, Sz> &data, std::string_view string) {
auto target = data.rbegin();
for (const auto octet : string | std::views::split('.')) {
if (target == data.rend()) {
return false;
}
const auto octet_begin = octet.data();
const auto octet_end = octet_begin + octet.size();
const auto error = std::error_code(std::from_chars(octet_begin, octet_end, *target).ec);
if (error) {
return false;
}
++target;
}
return target == data.rend();
}
简而言之,编译器抱怨没有可用于变量类型data()
的方法。我是否误解了那种应该符合标准的类型?从我的观点来看,这似乎是有争议的。size()
octet
octet
contiguous_range
string_view