标题:请教一个c++类的问题,这个程序错在哪儿啊?运行时无法给字符串赋值
只看楼主
蓝天绿水
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:29
注 册:2017-9-16
结帖率:66.67%
已结贴  问题点数:20 回复次数:5 
请教一个c++类的问题,这个程序错在哪儿啊?运行时无法给字符串赋值
程序代码:
#include <iostream.h>

using namespace std;
class node 
{
    private:
        int ID;
        char *name;
        int Tel;
    public:
        node ()
        {
            ID=0;name=0;Tel=0;
        }
        node (int a,char *b,int c)
        {
            ID=a;name=b;Tel=c;
        }
        void setnode()
        {
            cout<<"input ID: "<<endl;
            cin>>ID;
            cout<<"input name: "<<endl;
            cin>>name;   //这一行代码一直运行出错 
            cout<<"input Tel: "<<endl;
            cin>>Tel;
        }
        void output()
        {
            cout<<ID<<" "<<name<<" "<<Tel<<endl;
        }
        ~node(){}
};
int main ()
{
    node zx;
    zx.setnode();
    zx.output();
    return 0;
}
搜索更多相关主题的帖子: 运行 name node int cout 
2017-09-18 22:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
cin>>name; 是从控制台输入字符到name指向的内存中。
比如
char name[100];
cin >> name;
比如
char* name = new char[100];
cin >> name;
2017-09-19 07:47
蓝天绿水
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:29
注 册:2017-9-16
得分:0 
那应该怎么改啊,我就是想让用户自己输出字符串再赋值给name,但是一直出错
2017-09-19 12:48
苍穹之舞
Rank: 2
等 级:论坛游民
威 望:1
帖 子:62
专家分:35
注 册:2014-10-7
得分:7 
以下是引用蓝天绿水在2017-9-19 12:48:37的发言:

那应该怎么改啊,我就是想让用户自己输出字符串再赋值给name,但是一直出错

#include <iostream>
using namespace std;

class node
{
    private:
        int ID;
        char* name ;// 把整型变量改了  指针
        int Tel;
    public:
        node ()
        {
            ID=0;name= new char[100];Tel=0; //  指向字符数组的首地址
        }
        node (int a,char *b,int c)
        {
            ID=a;name=b;Tel=c;
        }
        void setnode()
        {
            cout<<"input ID: "<<endl;
            cin>>ID;
            cout<<"input name: "<<endl;
            cin>>name;   //这一行代码一直运行出错
            cout<<"input Tel: "<<endl;
            cin>>Tel;
        }
        void output()
        {
            cout<<ID<<" "<<name<<" "<<Tel<<endl;
        }
        ~node(){}
};
int main ()
{
    node zx;
    zx.setnode();
    zx.output();
    return 0;
}

2017-09-19 14:52
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:7 
用了char*name之后就用cin>>name之所以不可以,就是因为该指针只是做了声明,还没有指向某个地址。不论改成char name[100]还是char*name; name=new char[100],说到底都是要让指针name有一个确切指向的地址,有了确切地址才能接受输入。
2017-09-19 18:32
蓝天绿水
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:29
注 册:2017-9-16
得分:0 
哦,懂了,是因为类在申明是并未分配内存,谢谢
2017-09-19 19:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480791-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.123518 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved