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 文字列のバッファは、文字列よりも 1 文字長くする必要があります。バッファの最後の要素はゼロ文字でなければなりません\0

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

bufpublic メンバー変数を作成することは良い考えではないことに注意してください: のユーザーはString新しいバッファーを再割り当てできないため、アクセサーchar* c_str()を提供してbufprivate にすることはおそらく良い考えです。

于 2012-05-26T02:13:12.247 に答える