类函数中的c ++ char数组输出

马丁尼

我是一名真正的c ++初学者,我在c ++练习中的char数组输出有问题。我被要求将某个UML类转换为c ++,并使用main中给定的参数生成有效的输出。这里的代码:

#include <iostream>
#include <stdlib.h>


/*My class defintion book*/

class Book
{   protected: 
        long int number; 
        char author[25];
        int year;
        bool lent;

        void setLent(bool x);
        bool getLent(); 
    public: 
        Book(long int n, char a[25], int j, bool x);
        long int getNr();
        int getYear();
        void print();
        };
/*Method definition Book*/
Book::Book(long int n, char a[25], int j, bool x)
    {number=n;
    author=a;
    year=j;
    lent=x;}

long int Book::getNr()
    {return number; }

int Book::getYear()
    {return year;}

void Book::setLent(bool x)
    {lent=x;}

bool Book::getLent()
    {return lent;}

void Book::print()
    {
    std::cout << "Book Nr: " << number << std::endl;
    std::cout << "Author: " << author << std::endl;
    std::cout << "Year: " << year << std::endl;
    if (lent==0)
    std::cout << "Lent [yes/no]: no" << std::endl;
    else
    std::cout << "Lent [yes/no]: yes" << std::endl;
    }

/*MAIN*/

int main()
{
Book b1(123456, "test", 2014, false);

b1.print();

system("pause");
return 0;

这是我的输出:

Book Nr: 123456
Author: b<Vv-[[vóYA
Year: 2014
Lent [yes/no]: no
Press any key to continue...

如您所见,除“作者”之外,所有输出均有效。那里我胡扯。请注意,我必须使用char作为类型。因为它是在UML类中给出的,所以我不得不转换为c ++。

我真的到处搜寻。但是没有找到正确的解决方案。我觉得这将是一个非常简单的...

在此先感谢您的帮助!

巴里

这样做不起作用的原因是,您将指针 分配author给另一个指针 a,该指针随后超出了范围...因此您只能author指向一些垃圾。如果要坚持使用字符数组,则必须复制所有a指向的数据

strcpy(author, a);    

但是,由于它是C ++,因此您应该只使用字符串,这些字符串更易于处理:

class Book {
    ...
    std::string author;
    ....
};

Book::Book(long int n, const std::string& a, int j, bool x)
: author(a), ...
{ }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中输出char数组

来自分类Dev

使用char数组C ++获得奇怪的输出

来自分类Dev

在C中输出char的二维数组的最快方法

来自分类Dev

如何在C中的char数组中保存命令的输出?

来自分类Dev

从主类数组继承类中的C#执行函数

来自分类Dev

C函数中的多维char数组

来自分类Dev

在C中的函数内部修改char数组

来自分类Dev

C函数中的多维char数组

来自分类Dev

在C函数中返回char数组

来自分类Dev

检索返回C ++中数组的函数的输出

来自分类Dev

为什么成员函数中的char数组类型的类成员突然变成const char数组类型?

来自分类Dev

C#从C ++ DLL编组无符号char *数组(输入和输出)

来自分类Dev

如何在C / C ++函数中返回char *数组?

来自分类Dev

C ++将文本文件数据输出到char数组

来自分类Dev

C程序二维数组char值输出,用于2个字符

来自分类Dev

在类函数中访问数组类成员

来自分类Dev

从C中的函数返回char数组的首选方法

来自分类Dev

如何在C中传递函数多维char数组?

来自分类Dev

从C ++中的函数返回2D char数组并打印

来自分类Dev

如何在C中传递函数多维char数组?

来自分类Dev

如何在函数(语言c)中获取char数组大小?

来自分类Dev

如何从C中的函数返回2个昏暗的char数组

来自分类Dev

C中的Char *函数

来自分类Dev

char *的范围与C中的char数组相比

来自分类Dev

连接C ++中的char数组

来自分类Dev

C中的char数组的长度

来自分类Dev

C中的Char数组指针

来自分类Dev

在C中制作char数组

来自分类Dev

在类C ++中使用构造函数为char数组提供默认值