0

我声明了一个大小为 100 的数组,string bin[100];我希望每个数组都初始化为"". 如何用一行初始化所有这些?我尝试了类似的东西bin[] = "";,但它不起作用。任何帮助,将不胜感激。

默认构造函数

RandomString()
{
    input = "";
    //bin[] = "";
}
4

2 回答 2

2

你不需要做任何特别的事情,就string bin[100];可以了。std::string将为数组的每个元素调用默认构造函数。

如果数组是某个类的成员,则在成员初始化列表中对其进行初始化:

struct SomeClass
{
    std::string bin[100];
    SomeClass() : bin() // You can initialize arrays with () in the mem-init list
    {
    }
};

*从技术上讲,即使您不添加bin()到 mem-init 列表,也会调用默认构造函数,但这是一种很好的做法(因为内置类型将保持未初始化状态)。

在 C++ 中,类的成员通过初始化列表进行初始化。例如,在以下示例中,代码存在差异:

// First example
struct MyClass
{
    int i;
    SomeClass() : i(1)
    {
    }
};

// Second example
struct MyClass
{
    int i;
    SomeClass()
    {
        i = 1;
    }
};

在第一个示例中,i初始化1在初始化列表中。在第二个示例中1分配i。您可以将上述代码视为执行以下操作:

int i = 1; // First example

int i; // Second example
i = 1; 

对于像这样的内置类型int,两者之间没有太大区别,但是在某些情况下,上述区别可能非常重要,例如在声明成员时const

struct SomeClass
{
    const int i;
    SomeClass()
    {
       i = 1; // Error!!
    }
};

在上面的示例中,必须在初始化列表中初始化 const 成员。

于 2013-05-27T03:40:48.167 回答
0

以您的方式,您刚刚初始化了数组的第一个元素,默认 ctor 初始化为空字符串。您想初始化 100 个元素,只需对每个元素执行相同的操作即可。

于 2013-05-27T04:27:46.083 回答