lvshuer 2023-10-26 15:19 采纳率: 100%
浏览 7
已结题

c++类中定义函数给字符型数组赋值

在类中定义一个函数进行赋值,其中有一个是从键盘输入给字符型数组赋值,这要怎么赋啊,搜了很多也试了很多,都会报错。
感谢回答!

#include<iostream>
#include"student.h"//将类声明头文件包含进来
using namespace std;

int main()
{
    Student stud;//定义对象
    stud.display();//调用该对象的display函数

    return 0;
}

#include<iostream>
#include"student.h"
#include<string>
using namespace std;

void Student::set_value()
{
    int n = 0;
    cin>>n;
    num = n;

    string s;
    cin>>s;
    name = s;
    
    char e = '0';
    cin>>e;
    sex = e;
}
void Student::display()
{
    cout<<"num:"<<num<<endl;
    cout<<"name:"<<name<<endl;
    cout<<"sex:"<<sex<<endl;
}

//student.h  
class Student
{
public:
void display();//共有函数原型声明
void set_value();

private:
int num;
char name[20];
char sex;
};

这个报错我也看不明白

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-26 19:38
    关注

    【以下回答由 GPT 生成】

    问题出在你尝试将string类型的值赋给字符型数组name。在C++中,字符型数组不能直接通过赋值运算符来赋值,需要使用strcpy()函数。

    你可以按照以下步骤来解决这个问题:

    1. 首先,包含C++标准输入输出流的头文件iostream,在类定义的前面添加以下代码: cpp #include <iostream> using namespace std;

    2. 然后,添加string头文件,并删除原来的#include,在类定义的前面添加以下代码: cpp #include <string>

    3. 修改set_value()函数的代码,将cin>>s;这一行替换为以下代码: cpp getline(cin, s);

    4. 在set_value()函数中,修改name的赋值语句,将: cpp name = s; 修改为: cpp strcpy(name, s.c_str());

    最后,重新编译和运行程序,你将能够从键盘输入并正确赋值给字符型数组。

    以下是修改后的代码:

    #include <iostream>
    #include <string>
    using namespace std;
    
    class Student
    {
    public:
        void display();
        void set_value();
    private:
        int num;
        char name[20];
        char sex;
    };
    
    void Student::set_value()
    {
        int n = 0;
        cin>>n;
        num = n;
    
        string s;
        cin.ignore(); // 忽略前面的换行符
        getline(cin, s);
        strcpy(name, s.c_str());
    
        char e = '0';
        cin>>e;
        sex = e;
    }
    
    void Student::display()
    {
        cout<<"num:"<<num<<endl;
        cout<<"name:"<<name<<endl;
        cout<<"sex:"<<sex<<endl;
    }
    
    int main()
    {
        Student stud;
        stud.set_value(); // 修改这里,先输入值再显示
        stud.display();
        return 0;
    }
    

    希望这个解决方案对你有帮助!



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月3日
  • 已采纳回答 10月26日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 kotlin multiplaform 项目ios模块peripheral.writeValue需要NSData做参数 怎么在kotlin中实例化nsdata呢
  • ¥20 INCA标定工具ER亮红灯
  • ¥15 hive on spark
  • ¥15 星穹铁道中的ai自动战斗逻辑
  • ¥15 SimpleHook 一下android fake模块的VIP日期
  • ¥15 如何在VBA中利用word的错词提示功能识别word文本中的错别字并标注
  • ¥15 jupyter notebook无法识别的空格,如何解决?(语言-python)
  • ¥15 自动回复评论的小插件
  • ¥20 用c++完成两道大题,要求提供.h和.cpp,以及用来测试的main.cpp
  • ¥15 2024电赛H题指导