使用频率高,但操作复杂的数据有哪些?

做下总结:

int; double;float;char;bool这些类型用的比较频繁,但并不复杂。但对于字符串来说(char数组)用的频繁但操作又复杂,只能用一系列函数来引用,如何克服呢?

字符串类型:string 就此登场!

举个例子

设置好头文件后,直接定义一个名字,爱好,并且可以直接输出,很方便!

下面是初始化string的使用方法

string的便捷不只体现在初始化的方面,还体现在后面一整套的人性化的服务。如下:

代码举例:

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(void)
{
string name;
cout<<"Please input your name";
getline(cin,name);
if(name.empty())
{
cout<<"input is null.."<<endl;
system("pause");
return ;
}
if(name=="imooc")
{
cout<<"you are a adminstractor"<<endl;
}
cout<<"hello"+ name<<endl;
cout<<"your name length :" << name.size() <<endl;//字符串和非字符串连接时不可以用“+”号,要用“<<”号
cout<<"your name first letter is:"<<name[]<<endl;
system("pause");
return ;
}

如果输入任意一个名字,比如:

如果输入管理员名称(imooc):

数据的封装

面向对象的基本思想:

以对象为中心,具体来说就是要以,“谁做什么”来表达程序的逻辑,体现到代码的层面,就是将所有的程序,数据,操作转化为成员函数的调用,换句话说,对象在程序中的所有行为,都是通过调用自己的函数,来完成。

那如何通过函数来封装数据成员呢?如下例

以年龄这个数据为例,我们定义了两个成员函数,“setAge”用来设置年龄的值。另一个是“getAge”用来读取年龄的值。

这样操作虽然操作上麻烦些,但提高了代码的安全性和整体性,值得拥有!

数据封装的优点:

比如此例中,给“stu.age”赋值1000的话,显然是有问题的,但如果通过数据的封装,就可以把这个问题给解决掉了。

给“setAge”标定函数意义,规定一个取值的范围,就把上面的问题给解决了!

对于有些数据成员,我们只希望这些成员被外界读取,而不希望被外界改写,怎么写呢?如下例:

我们只希望通过这样一个成员,获取“轮子的个数”而不希望设置,那就这样写。

下面是一个封装的代码例子

#include<iostream>
#include<string>
using namespace std; /*数据的封装
定义一个Student类,含有如下要求:
1.姓名:name
2.性别:gender
3.学分(只读):score
4.学习:study
*/
class Student
{
public:
void setName(string _name)
{
m_strName = _name;
}
string getName()
{
return m_strName;
}
void setGender(string _gender)
{
m_strGender = _gender;
}
string getGender()
{
return m_strGender;
}
int getScore()
{
return m_iScore;
}
void initScore()
{
m_iScore = ;
}
void study(int _score)
{
m_iScore+=_score;//m_iScore=m_iScore+_score;
} private:
string m_strName;
string m_strGender;
int m_iScore; };
int main(void)
{
Student stu;
stu.initScore();
stu.setName("zhangsan");
stu.setGender("男");
stu.study();
stu.study(); cout<<stu.getName()<<" "<<stu.getGender()<< " "<<stu.getScore()<<endl;
system("pause");
return ; }

C++学习日记(二)————初始字符串类型的更多相关文章

  1. 高可用Redis(二):字符串类型

    1.Redis字符串结构 对于Redis来说,所有的key都是字符串,其value可以是string,list,hash,set,zset 比如下面的 键值对的value还可以更加复杂,比如可以是js ...

  2. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  3. 学习笔记:MySQL字符串类型

    字符串类型 a)         char和varchar 1.都需要指定字符的长度,char中的长度是字符的长度,而varchar的长度是字节的长度 2. char中指定的长度就是实际占用的长度,而 ...

  4. Python学习日记(二十七) 反射和几个内置函数

    isinstance() 判断isinstance(obj,cls)中obj是否是cls类的对象 class Person: def __init__(self,name): self.name = ...

  5. Redis 常用命令学习二:字符串类型命令

    1.赋值与取值命令 127.0.0.1:6379> set foo helloredis OK 127.0.0.1:6379> get foo "helloredis" ...

  6. C++系统学习之二:字符串

    上一篇文章主要学习的是C++的基本类型,它们是C++语言直接定义的,它们体现了计算机硬件本身具备的能力.而本篇文章将主要学习内置类型之外的标准库所定义的类型,分别是string和vector,此外还将 ...

  7. Python学习日记(二十八) hashlib模块、configparse模块、logging模块

    hashlib模块 主要提供字符加密算法功能,如md5.sha1.sha224.sha512.sha384等,这里的加密算法称为摘要算法.什么是摘要算法?它又称为哈希算法.散列算法,它通过一个函数把任 ...

  8. Java学习日记之 Java-其他类型

    OK , 就绪, 第一篇博客开撸 ~ 先听了毕姥爷激情澎湃的其他类型 ,从这里开始入手吧 : (一)System类  System类代表系统类,系统的属性和方法都放在该类.System类是一个fina ...

  9. Go语言学习笔记(二) [变量、类型、关键字]

    日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号.   2.Go 同其他语言不同的地方在于变 ...

随机推荐

  1. 【整理】01. Fiddler 杂记

    抓手机包步骤: Tools -- Fiddler Options -- Connections (默认)Fiddler listens on port:8888 (勾选)Allow remote co ...

  2. MongoDB增 删 改 查

    增 增加单篇文档 > db.stu.insert({sn:'001', name:'lisi'}) WriteResult({ "nInserted" : 1 }) > ...

  3. HDU5727 Necklace(二分图匹配)

    Problem Description SJX has 2*N magic gems. N of them have Yin energy inside while others have Yang ...

  4. SSRF漏洞学习

    SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内 ...

  5. nginx的平滑升级

    一:解释nginx的平滑升级 随着nginx越来越流行,并且nginx的优势也越来越明显,nginx的版本迭代也来时加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理功能, ...

  6. Python 写网络爬虫思路分析

    首先从程序入口开始分析,在程序入口处传入一个待爬取的网址, 使用下载器Html_downloader类下载该地址的内容,使用解释器 parser分析内容,利用BeautifulSoup包抓取想要爬取的 ...

  7. 简单选择排序 Selection Sort 和树形选择排序 Tree Selection Sort

    选择排序 Selection Sort 选择排序的基本思想是:每一趟在剩余未排序的若干记录中选取关键字最小的(也可以是最大的,本文中均考虑排升序)记录作为有序序列中下一个记录. 如第i趟选择排序就是在 ...

  8. Web前端学习开篇

    首先想想自己喜欢干什么?想干什么?脑袋需要什么?什么对自己来说最重要?自己的规划? 本人数字媒体技术专业,想学Web前端开发有好长时间了,有一定的基础,所以就想进一步深入学习.谁料想,我怎么那么没有耐 ...

  9. easyUI datagrid 列宽自适应(简单 图解)(转)

    响应数据格式: easyUI在html代码中结构: 发现了什么没有,我们的表头其实是一个td在td中有一个属性field那么我们就可以获得了; 以下就是自适应代码: //添加事件 function c ...

  10. 人生苦短我用Python 第三周 函数周

    函数的定义: 1,def 函数名(参数1,参数2......): "注释:函数的作用和参数,增加可读性", 2,函数体 3,返回值 最简单的函数: def func(): prin ...