字符串的动态内存分配

时间:2014-11-12 11:17:39

标签: c++

我是一名c ++初学者。我试图动态分配内存。以下是我的代码的一部分

string[] Line = new string[3];

Line[0] = (0x01 == (0x01 & Config)) ? "x" : "y";
Line[1] = (0x02 == (0x02 & Config)) ? "a" : "b";

错误是:未声明的标识符"行"。 我哪里错了?

5 个答案:

答案 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');