1

我是 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];

}
4

1 回答 1

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私有可能是个好主意。

于 2012-05-26T02:13:12.247 回答