是的。對於清潔,易於理解的,正確的,異常安全的代碼,使用vector
和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字符串完成類似的結果,但要這樣做並確保代碼是正確的並且異常安全更加困難並且需要更多的代碼。