0

このような状況があります。

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++でそのようなことを行うことは可能ですか? 私はそれをやってみましたが、うまくいきません。

4

1 に答える 1

6

はい。クリーンで理解しやすく、正しく、例外セーフなコードを作成するには、 and を使用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;
}

もちろん、手動の動的割り当てと配列と C 文字列の両方のクリーンアップを使用して同様の結果を達成できますが、そうしてコードが正しく、例外に対して安全であることを確認することはより難しく、かなり多くのコードが必要になります。

于 2012-06-05T00:02:41.053 に答える