c++ - 如何用一行代码初始化字符串类型的数组?

标签 c++ arrays string visual-c++ initialization

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

默认构造函数

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

最佳答案

您不需要做任何特别的事情,只需 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 这样的内置类型,两者之间没有太大区别,但是在某些情况下,上述差异可能非常重要,例如当成员被声明为 时常量:

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

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

关于c++ - 如何用一行代码初始化字符串类型的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765989/

相关文章:

c++ - 删除控制台/cmd 提示符上闪烁的下划线

c++ - 修改修饰名 - VS6.0 到 VS2005 迁移

javascript - 如何检查数组中的值是否已存在,如果不存在则将其插入数组

arrays - 在LUA中将数组转换为字符串

C++。 1 除以任何数得到 0

C++ - 如何正确地将比较器传递给 STL 函数

javascript - 映射到数组对象中,并带有其他映射参数的索引

javascript - 使用JS从txt文件中检索2个数组

c - C语言求两个字符串中最长的公共(public)词?

c++ - clang 编译器挂起 -std=c++17 -O3