如何声明一个数组,然后再分配它?

时间:2014-03-13 07:42:10

标签: c++ arrays string initialization

class M{
    string s[5];
    M(){
        s = ["abc","abc","abc","abc","abc"]; // error, how i solve it?
    }
};

我想将数组声明为私有变量,然后为其赋值。

3 个答案:

答案 0 :(得分:4)

您可以使用mem-initializer列表。例如

class M
{
    string s[5];
pyblic:
    M() : s{ "abc", "abc", "abc", "abc", "abc" }
    {
    }
};

或者您可以使用标准类std::array代替数组。例如

#include <array>

class M
{
    std::<string, 5> s;
pyblic:
    M() 
    {
         s = { "abc", "abc", "abc", "abc", "abc" };
    }
};

答案 1 :(得分:1)

数组不可分配。但是您可以使用构造函数初始化列表:

M() : s{"abc","abc","abc","abc","abc"}
{
}

您还可以在声明点初始化成员:

class M{
    string s[5]= {"abc","abc","abc","abc","abc"};
    M(){}
};

这两个都需要C ++ 11编译器。

或者,您可以修改数组以包含所需的值。例如,

#include <algorithm> // for std::fill

M()
{
  std::fill(s, s+5, "abc");
}

答案 2 :(得分:0)

改为使用vector

std::vector<string> s;
s = {"abc","abc","abc","abc","abc"};