0

我创建了一个 String 类,它有两个私有成员 int length 和一个字符指针。有两个构造函数初始化这些成员。我的问题为什么 s1.print() 在我的代码中不起作用?

#include <iostream>

#include <string.h>

using namespace std;

class String {
  int length;
  char * ptr;
  public:
    String(int N, char s[]) {
      ptr = new char[N];
      strcpy(s, ptr);
    }
  String(int N) {
    ptr = new char[N];
  }
  String concat(String s2) {
    String result(s2.length + length, strcat(ptr, s2.ptr));
  }
  void print(void) {
    cout << ptr << endl;
  }
};

int main() {
  char temp[50];
  cin >> temp;
  String s1(strlen(temp) + 1, temp);
  //String s2(strlen(temp)+1, temp);
  s1.print();
  //s1.concat(s2);
  //s1.print();

  return 0;
}
4

1 回答 1

0

为了打印 char* 您需要将其转换为字符串然后打印。我建议您的数组大小为 N + 1 并在 ptr[N] = '\0' 处添加一个 NULL 终止符

于 2012-12-30T09:35:53.220 回答