gpt4 book ai didi

c++ - 从字符串文字初始化 char 数组

转载 作者:行者123 更新时间:2023-11-30 02:34:55 25 4
gpt4 key购买 nike

我有一个内部有 char 数组的结构,但是如果字符串变长,我找不到合适的方法来初始化它。

struct T
{
char id[4];
};

T t{ 'a','b', 'c','d'}; // case 1: OK

T t{"abcd"}; // case 2: ERROR, "abcd" size is 5, too long for id

我得到以下错误:

   error: initializer-string for array of chars is too long [-fpermissive]
T t{"abcd"};

原因是字符串文字“abcd”包含空终止符,所以大小为5。

此语法是允许的 C99 string literals , 我如何在 C++11 中变通?

最佳答案

你运气不好。如果您不能更改 T 则没有解决方法,除非您放弃直接初始化。你必须使用 T t{'a', 'b', 'c'}; 等。这是因为 T 是一个聚合,所以唯一的形式初始化的目的是为每个元素传递实际的初始化程序。

当然你可以写一个函数,例如:

T t = T_from_literal("abcdefgh...");

该函数使用 std::copy 或类似方法将字符复制到 T t; 中,并利用复制省略按值返回。

关于c++ - 从字符串文字初始化 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34194363/

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