Cull中的Null终止数组

时间:2011-12-19 19:38:12

标签: c++

我想在构造函数中创建NULL终止数组。

class Test
{
    char name [30];
    char Address[100]
};

Test::Test()
{
    memset(name ,0, 30);
    memset(Address, 0, 100);
}

这是将数组初始化为NULL的正确方法吗?

这有什么好的选择吗?

5 个答案:

答案 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::nameTest::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;
}

通过这种方式,您可以将变量解释为空字符串。