我有这样的情况。
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;
是否有可能在 C++ 中做这样的事情。我试过这样做,但它不适合我。
我有这样的情况。
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;
是否有可能在 C++ 中做这样的事情。我试过这样做,但它不适合我。
是的。对于干净、易于理解、正确、异常安全的代码,请使用vector
and string
:
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;
}
当然,您可以使用手动动态分配和清理数组和 C 字符串来完成类似的结果,但要这样做并确保代码正确和异常安全更加困难,并且需要更多的代码。