您不能分配数组。您可以将 的类型更改value
为 achar*
或将 的内容复制generalOptions[0]
到value
。如果要复制内容,则需要确保value
有足够的空间来容纳generalOperations
.
修改字符串文字是未定义的行为,通过将类型更改const char*
为编译器可以检测到任何修改其中一个条目的尝试,generalOperations
而不是在运行时遇到奇怪的行为:
const char* generalOperations [2]={"Off","On"};
const char* value;
请注意,如果要对其进行初始化,则不必指定数组中的元素数:
const char* generalOperations [] = {"Off","On"};
或者,如果这真的是 C++,你可以改为创建value
一个std::string
并分配给它,它将复制generalOperations
元素。
由于 C++ 似乎真的是语言,并且允许使用 C++11 功能而不是使用 aswitch
您可以创建将值与std::map
相关联的a :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。