gpt4 book ai didi

c++ - 如何使用省略尾随 '\0' 的字符串文字初始化 std::array

转载 作者:可可西里 更新时间:2023-11-01 18:17:05 26 4
gpt4 key购买 nike

我有一个文件结构,其中固定长度的字符串没有尾随零。如何将字段初始化为不带尾随零的 std::array:

#pragma pack(push, 1)
struct Data {
// Compiles, but it has an undesired '\0':
std::array<char, 6> undesired_number{"12345"};
// Does not compile:
std::array<char, 5> number{"12345"}; // stripping '\0'
};
#pragma pack(pop)

最佳答案

制作辅助函数

template <std::size_t N, std::size_t ... Is>
constexpr std::array<char, N - 1>
to_array(const char (&a)[N], std::index_sequence<Is...>)
{
return {{a[Is]...}};
}

template <std::size_t N>
constexpr std::array<char, N - 1> to_array(const char (&a)[N])
{
return to_array(a, std::make_index_sequence<N - 1>());
}

然后

struct Data {
std::array<char, 5> number{to_array("12345")}; // stripping '\0'
};

Demo

关于c++ - 如何使用省略尾随 '\0' 的字符串文字初始化 std::array<char, N>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33484233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com