用c ++初始化char **

时间:2015-01-23 10:17:26

标签: c++ c++11

我查看了大部分相关帖子,但遗憾的是我无法得到满意的答案。

我使用的第三方库的结构属性为char**,我需要填充它。我尝试了几乎所有可以想象的东西,我认为它是有效的c ++语法并且可以工作,但是我总是在尝试分配它时遇到运行时错误。

为了澄清我应该说字符串数组应该采用(我假设)文件的名称。

将此视为我们的代码:

char** listOfNames; // belongs to the 3rd party lib - cannot change it listOfNames = // ???

所以我的问题是如何用一个或多个字符串文件名初始化这个变量,例如:“myfile.txt”?

也应与c ++ 11兼容。

2 个答案:

答案 0 :(得分:1)

这样的东西
char** listOfNames; // belongs to the 3rd party lib - cannot change it
try
{
    listOfNames = new char*[10] { "Hello", "world", ... };
}
catch (std::exception const& e)
{
    // delete the arrays here...
    // ...
    std::cout << e.what();
}

答案 1 :(得分:0)

我认为您应该将listOfNames初始化为动态字符串数组,然后按以下代码初始化数组的每个元素:

char** listOfNames; // belongs to the 3rd party lib - cannot change it

int iNames = 2; // Number of names you need

try
{
    // Create listOfNames as dynamic string array
    listOfNames = new char*[iNames];

    // Then initialize each element of the array
    // Element index must be less than iNames
    listOfNames[0] = "Hello";
    listOfNames[1] = "World";
}
catch (std::exception const& e)
{
    std::cout << e.what();
}