我是一名c ++初学者。我试图动态分配内存。以下是我的代码的一部分
string[] Line = new string[3];
Line[0] = (0x01 == (0x01 & Config)) ? "x" : "y";
Line[1] = (0x02 == (0x02 & Config)) ? "a" : "b";
错误是:未声明的标识符"行"。 我哪里错了?
答案 0 :(得分:2)
string[] Line = new string[3];
这更像是Java而不是C ++(它根本不是有效的C ++)。如果你想要一个3 string
的数组,只需执行以下操作:
string Line[3];
答案 1 :(得分:1)
大小为3的静态字符串数组:
std::array<std::string, 3> line;
动态字符串数组:
std::vector<std::string> line;
但是根据您的数组名称判断,您可能只需要一个字符串。这就是保持一条线所需要的一切。
答案 2 :(得分:0)
分配为:
string *Line = new string[3]; // dynamic allocation
不使用时,请取消分配为:
delete [] Line;
否则,使用静态分配的数组:
string Line[3];
之后,你的陈述是有效的:
Line[0] = (0x01 == (0x01 & Config)) ? "x" : "y";
Line[1] = (0x02 == (0x02 & Config)) ? "a" : "b";
答案 3 :(得分:0)
使用 vector 因为它允许你重新定义数组并包含迭代器
vector<string> vString(3);//vString is an array that contains 3 elements
然后您可以像在普通数组中那样进行分配
vString[0]=.....;
答案 4 :(得分:0)
如果你的问题只是在一个字符串中设置字符,你可以这样做:
std::string Line;
Line.push_back((0x01 == (0x01 & Config)) ? 'x' : 'y');
Line.push_back((0x02 == (0x02 & Config)) ? 'a' : 'b');