c++ 字符串的输出处理

我想输出名字,可是只能输出一个字符,这可咋整?

#include <iostream>
using namespace std;
class Time
{
public:
    Time(int h,int m,int s):hour(h),minute(m),second(s){};
    void gettime()
    {
        cout<<"the time is "<<hour<<":"<<minute<<":"<<second<<endl;
    }
private:
    int hour,minute,second;
};
class Date
{
public:
    Date (int y,int m,int d):year(y),month(m),day(d){};
    void getdate()
    {
        cout <<"the date is "<<year<<":"<<month<<":"<<day<<' ';
    }
private:
    int year,month,day;
};
class Birthtime:public Date,public Time
{
public:
    Birthtime(int y,int dm,int d,int h,int tm,int s,char *p):Date(y,dm,d),Time(h,tm,s),Childname(p){};
    void getname()
    {
        cout<<"the name is "<<*Childname<<endl;
    }
private:
    char *Childname;
};
int main()
{
    char *pt="shiyi";
    Birthtime child_1(2005,01,24,03,26,39,pt);
    child_1.getdate();
    child_1.gettime();
    child_1.getname();
}


img


void getname()
{
    cout << "the name is " << Childname << endl;
}

建议childname变量使用字符串 std::string

#include <string>
class Birthtime:public Date,public Time
{
public:
    Birthtime(int y,int dm,int d,int h,int tm,int s,char *p):Date(y,dm,d),Time(h,tm,s),childname(p){};
    void getname()
    {
        cout<<"the name is "<< childname<<endl; // 此处去除 *
    }
private:
    std::string childname; // 修改为 std::string
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7680798
  • 这篇博客你也可以参考下:C++ 输入一个数字,逆序输出
  • 除此之外, 这篇博客: C++一维数组的初始化及可能出现的问题中的 一维数组初始化时可能出现的错误: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    数组定义时没有初始化,定义后又给数组整体大括号赋值,比如:

    int num[5];
    num[5] = { 1,2,3,4,5 };

    这样是不可取的,报错情况如下:

     所以,不能在数组定义之后,再用大括号整体赋值。

    在利用数组下标进行赋值时,也要避免数组下标越界的情况发生(虽然很少发生,但也要注意,当代码变多变复杂时,不注意就很有可能发生)。

  • 您还可以看一下 朱有鹏老师的朱老师C++第2部分-2.3.C++继承和多态特性课程中的 2.3.20.纯虚函数与抽象类2小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    解决方案:

    在C++中输出完整的字符串,可以直接使用cout输出字符串变量。如果只能输出一个字符,可能是定义字符串时没有加上双引号,或者在输出时少了一个<<符号。示例代码如下:

    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
        string name = "Tom";// 定义字符串变量name并赋值
        cout << name << endl;// 输出完整的字符串name
        return 0;
    }
    

    输出结果如下:

    Tom
    

    如果还是不能输出完整的字符串,可以尝试使用循环输出每个字符。示例代码如下:

    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
        string name = "Tom";// 定义字符串变量name并赋值
        for(int i = 0; i < name.length(); i++){// 使用循环输出每个字符
            cout << name[i];
        }
        cout << endl;// 换行
        return 0;
    }
    

    输出结果与之前相同:

    Tom
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^