是否可以在C++中拥有一个动态填充的char*数组

Cam*_*ase 0 c++ dynamic character-arrays

我有这种情况.

declare array of char*;
switch(id)
{
case 1:
    add 4 words in array
case 2:
    add 2 words in array
default:
    add 1 word in array
}

use array here;
Run Code Online (Sandbox Code Playgroud)

是否有可能在C++中做这样的事情.我试过这样做,但它不适合我.

Jam*_*lis 6

是.对于干净,易于理解,正确,异常安全的代码,请使用vectorstring:

std::vector<std::string> v;

switch (id)
{
case 1:
    v.push_back("a");
    v.push_back("b");
    v.push_back("c");
    v.push_back("d");
    break;

case 2:
    v.push_back("a");
    v.push_back("b");
    break;

default:
    v.push_back("a");
}

// Use the strings in v; for example, using a C++11 lambda expression:
std::for_each(begin(v), end(v), [](std::string const& s)
{
    std::cout << s << std::endl;
});

// Or using a for loop:
for (std::vector<std::string>::const_iterator it(v.begin()); it != v.end(); ++it)
{
    std::cout << *it << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用手动动态分配和清除数组和C字符串来完成类似的结果,但这样做并确保代码正确并且异常安全更加困难并且需要更多代码.