标题:id 是int 还是 string?
只看楼主
专业课的小白
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2019-12-17
结帖率:40%
 问题点数:0 回复次数:10 
id 是int 还是 string?
定义一个学生类,其中有3个数据成员:学号、姓名、年龄,构造函数,display函数。同时编写main函数使用这个类,实现对学生数据的赋值和输出。
提示:与例题9-1的Time类似,只是时分秒变为学生信息,数据类型变为string类型.



这是老师布置的课后习题,我做出来了,但是没有按照老师的提示,我在网上搜的答案,都是用了string,在定义的时候还定义了数组。
下面是自己写的,还请路过的朋友多多提出自己的想法。
#include<iostream>
using namespace std;
class Student
{
public:
    Student()
    {
        num=0;
        name=0;
        age=0;
    }
    void set()
    {
        cin>>num;
        cin>>name;
        cin>>age;
    }
    void display()
    {
        cout<<"学号:"<<num<<endl;
        cout<<"姓名:"<<name<<endl;
        cout<<"年龄:"<<age<<endl;
    }
private:
    int num;
    char name;
    int age;
};
void  main()
{
    Student t;
    t.set();
    t.display();
}


搜索更多相关主题的帖子: name num int string age 
2020-04-05 16:09
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
我没学到类,不过进来了不说自己的看法有点不礼貌,
1 既然是做学生类,说明会有很多成员,建议做成数组形式
2 建议根据c++标准来,c++不支持void main
3 既然选择了用类做,感觉这不像cpp的写法,有点像c的
当然我也是新手,有说的不对的地方先说一下抱歉

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-04-05 16:29
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
还有您说的Id是学号吗?
如果是学号的话我会用字符串

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-04-05 16:34
专业课的小白
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2019-12-17
得分:0 
回复 2楼 叶纤
对于用void main 还是int main 等等的,我一直都不太懂,捉摸不定。
还有您刚刚说的,有点像c的写法,我学的确实不够到位。我也只能浅浅的觉得c和c++在形式上的最大的不同就是cin和cout了。
所以还希望多多指出我的不足,如果不麻烦的话,再讲解一下。



就是学号。因为是数字嘛,所以我一开始先想到的是int ,没有想到string,额,,对于string ,我也是有些混沌。
2020-04-05 16:49
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 

突然感觉我之前发的一个问题贴和你这个有点类似,不过是用结构体做的,你可以改改

程序代码:
#include <iostream>
#include <vector>
#include <string_view>
#include <array>
#include <algorithm>
using namespace std;

struct Man
{
    std::string_view a;
    int grad;
};

struct arrayW
{
    vector<Man>arra;
};

bool strnum( const Man& str)
{
    return (str.a.find("jk") != std::string_view::npos);
}

int main()
{
    arrayW arrau;
    arrau.arra.resize(3);
    arrau.arra[0] = { " kjk",67 };
    arrau.arra[1] = { " dfd",671 };
    arrau.arra[2] = { " fdd",673 };

    for (auto tem : arrau.arra)
    {
        cout << " " << tem.a << " " << tem.grad << endl;
    }
    auto found = find_if(arrau.arra.begin(),arrau.arra.end(),strnum);
    auto countnum = count_if(arrau.arra.begin(),arrau.arra.end(),strnum);
    if (found == arrau.arra.end())
    {
        cout << "未识别";
    }
    else
    {
        cout << found->a << endl;
        cout << countnum << endl;
    }
}


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-04-05 16:58
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
看法是你写错
姓名不可能用一个字符就能存

https://zh.
2020-04-05 17:09
雪影辰风
Rank: 6Rank: 6
来 自:衡阳市
等 级:贵宾
威 望:22
帖 子:177
专家分:387
注 册:2019-6-17
得分:0 
回复 4楼 专业课的小白
如果你的学生ID是包含字母的,那就用string,如果不包含字母,建议用int,因为int型变量操作起来比较方便,效率高;
比如说,你要判断一个ID
示例代码:
    if(id==1809) {};
这个id是int型的,实际上计算机只需要比较每一个二进制位就行了,而:
    if(id=="1809") {};
这样的话,计算机会逐个进行比较,若id长度过长,就会导致超时等问题

然后就是main函数类型问题,在C语言里面,main函数是可以用作void型的,但C++开始,就不支持void型了,只能用int型(C++编程标准)
还有就是string,其实string不是一个变量类型,你在输入的时候也会发现,你定义string变量时,IDE不会高亮显示string(或者说高亮颜色与int等不一样),因为string是一个类
再者就是C与C++的区别,根据名称是可以知道,C++是C的升级版,C++中引入了很多东西,像命名空间、类、新的标准输入输出(即为cin和cout,这个标准输入输出流是很智能的,它几乎能打印出所有类型的值或变量,但因功能丰富,实际效率会低于scanf和printf)等
2020-04-05 17:18
专业课的小白
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2019-12-17
得分:0 
回复 7楼 雪影辰风
谢谢,满满的干货已收到。
2020-04-09 15:14
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
得分:0 
如果是纯数字用int
string 可以表示0001 这样的字符串 是int表示不了的
2020-04-10 14:42
LLU
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-4-16
得分:0 
我觉得还是在主函数里面定义一个数组,因为不可能仅仅收集一两个学生的信息
  Student.t[100]
  for(i=1;i<n;i++)// 这里需要自己定义
{ cout<<"enter num name sex:"<<endl;
        cin>>a>>b>>c;
        t.[i]=Student(a,b,c);
        t.[i]->display();
}
  
2020-04-16 21:38



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




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

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