如何在类中使用char *

时间:2012-05-26 02:08:15

标签: c++ class constructor char

我是c ++的新手,并从教科书中进行自我训练。我需要创建一个新类“String”。它必须使用构造函数将字符串初始化为由分隔长度的重复字符组成。

我无法弄清楚如何为char *变量赋值。根据任务,我不能使用标准字符串库来执行此操作。我的构造函数需要做什么?

#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <string.h>

using namespace std;

class String {
  protected:
    int  _len;

  public:
      char *buff;
    String (int n, char* c);
};

int main()
{
  String myString(10,'Z');
  cout << myString.buff << endl;

  system("PAUSE");
  return 0;
}

String::String(int n, char* c)
{
  buff = new char[n];

}

1 个答案:

答案 0 :(得分:2)

你几乎就在那里:因为你需要重复的角色,你不应该传递char*,而只是传递char。 C字符串的缓冲区也需要比字符串长一个字符;缓冲区的最后一个元素必须是零字符\0

String::String(int n, char c) {
    buff = new char[n+1];
    for (int i = 0 ; i != n ; buf[i++] = c)
        ;
    buf[n] = '\0';
}

请注意,将buf设为公共成员变量不是一个好主意:String的用户不应该重新分配新缓冲区,因此提供访问者char* c_str()并进行制作私有buf可能是一个好主意。