我是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];
}
答案 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
可能是一个好主意。