Const char *作为动态数组的参数

时间:2013-10-25 06:59:53

标签: c++ arrays pointers

我有一个关于我正在进行的编程任务的快速问题。 我们目前正在研究动态分配阵列。

我能够在构造函数中将我的“Book”对象设置为默认值/ name(使用strcpy):

Book::Book() 
{
 strcpy(title, " ");
 strcpy(author, " ");
 price = 0.00;
}

但是,在分配(Set函数)中给出的另一个函数中,我无法使用strcpy对以下内容执行相同的操作:

void Book::Set(const char* t, const char* a, Genre g, double p)
{
    strcpy(title, *t);
    strcpy(author, *a);
    type = g;
    price = p;
}

我的问题是,如何通过第一个“Const char * t”参数获取信息,并将其设置为名为title [31]的私有数据字符数组?

这是我的“Book”类btw的成员数据:

private:
  char title[31];   // may assume title is 30 characters or less
  char author[21];  // may assume author name is 20 characters or 
  Genre type;       // enum Genre
  double price;

如果我需要澄清任何事情,请告诉我,

再次感谢!

2 个答案:

答案 0 :(得分:3)

当你对std函数有疑问时,你应该读一下这个人。 strcpy的原型是:

char *strcpy(char *dest, const char *src);

所以当你写:strcpy(title, *t);它不会编译。你应该写: strcpy(title, t);

一个建议,当你在课堂上写attrib的名字时,你应该使用_之前或m_或m这样:_title,m_title,mTitle。只是因为使用一个字母名称来变量是危险的。

另外,在c ++中你应该使用std::string因为它更容易操作caracters链。

答案 1 :(得分:1)

而不是

strcpy(title, *t);
strcpy(author, *a);

strcpy(title, t);
strcpy(author, a);

这是因为strcpy期待指针,*t不是指向字符串的指针。

在这里查看http://www.cplusplus.com/reference/cstring/strcpy/