如何在 new[] 的值初始化中使用变量

How Do I Use a Variable in new[]'s Value Initialization

本文关键字:初始化 变量 new      更新时间:2023-10-16

所以当new一个char数组时,我可以值初始化:

const char* foo = new char[4]{'J', 'o', 'n', ''};

我想知道的是如何使用该initializer_list中的变量:

const string initializer{"jon"};
const char* foo = new char[4]{initializer.c_str()}; // This doesn't work, can I make it work?

您可以使用变量,但不能使用字符串并期望编译器神奇地将其拆分。

const char* ip = initializer.c_str();
const char* foo = new char[4]{ip[0], ip[1], ip[2], ip[3]};

但是,一旦您拥有可变长度,这根本不起作用。您只需要分配,然后在单独的步骤中使用string::copy填充数组。