我声明了一个大小为 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/