配列を割り当てることはできません。のタイプをvalue
に変更するか、 の内容をにchar*
コピーできます。コンテンツをコピーする場合は、 に要素のコンテンツを保持するのに十分なスペースがあることを確認する必要があります。generalOptions[0]
value
value
generalOperations
文字列リテラルの変更は未定義の動作です。コンパイラは、実行時に奇妙な動作を経験const char*
する代わりに、エントリの 1 つを変更しようとする試みを検出できます。generalOperations
const char* generalOperations [2]={"Off","On"};
const char* value;
配列を初期化する場合は、配列の要素数を指定する必要がないことに注意してください。
const char* generalOperations [] = {"Off","On"};
または、これが本当に C++ である場合はvalue
、代わりに を作成し、それに代入して要素std::string
をコピーすることができます。generalOperations
C++ は実際には言語であり、C++11 の機能は を使用する代わりに許可されているため、値を に関連付けるswitch
を作成できます。std::map
int
std::string
#include <iostream>
#include <string>
#include <map>
const std::map<int, std::string> generalOperations{ {17, "Off"},
{29, "On" } };
int main()
{
auto e = generalOperations.find(17);
if (e != generalOperations.end())
{
// Do something with e->second.
std::cout << e->second << "\n";
}
return 0;
}
デモ: http://ideone.com/rvFxH .