我想在构造函数中创建NULL终止数组。
class Test
{
char name [30];
char Address[100]
};
Test::Test()
{
memset(name ,0, 30);
memset(Address, 0, 100);
}
这是将数组初始化为NULL的正确方法吗?
这有什么好的选择吗?
答案 0 :(得分:5)
我可能会这样做:
class Test
{
std::string name;
std::string address;
};
答案 1 :(得分:5)
如果您计划使用C风格的字符串,则只需将第一个字符设置为空终止符。
name[0] = Address[0] = 0;
但是,从长远来看,最好使用std::string
代替。
答案 2 :(得分:4)
正确的C ++习惯用法是在构造函数的初始化列表中 value-initialize 你的C字符串:
class Test
{
char name[30];
char address[100];
public:
Test();
};
Test::Test()
: name(),
address()
{ }
这将使Test::name
和Test::address
的所有元素的净效果设置为'\0'
。
当然,首先避免使用原始C字符串会更好,但其他答案已经说明了这一点......
答案 3 :(得分:1)
要存储字符串,将第一个字符设置为0就足够了。即
Test::Test()
{
name[0] = Address[0] = 0;
}
如果你想(为某些特定目的)填充整个数组,请使用sizeof来避免硬编码索引。
Test::Test()
{
memset(name, 0, sizeof(name));
memset(Address, 0, sizeof(Address));
}
答案 4 :(得分:0)
我不确切地知道你想做什么,但我应该这样做:
Test::Test()
{
name[0] = 0;
Address[0] = 0;
}
通过这种方式,您可以将变量解释为空字符串。