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

做下总结:

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. teamviewer试用期到期解决

    1.命令行输入:%appdata%删除teamviewer文件夹2.命令行输入:regedit删除teamviewer文件夹3.卸载tv4.控制面板->设备管理器->网络适配器->f ...

  2. 数据结构随笔-php实现队列

    队列(Queue): 满足先进先出(FIFO)的规则: 下面使用php实现一个简单的循环队列模型: 初始状态的队列,队列长度为0,队头和队尾的指针相同均位于队列的开始: 入队操作:队尾指针向后移动,长 ...

  3. EntityFramework Core查询问题集锦(一)

    前言 和大家脱离了一段时间,有时候总想着时间挤挤总是会有的,但是并非人愿,后面会借助周末的时间来打理博客,如有问题可以在周末私信我或者加我QQ皆可,欢迎和大家一起探讨,本节我们来讨论EF Core中的 ...

  4. 求m区间内的最小值

    洛谷P1440 求m区间内的最小值 ............................................................................... 以上 ...

  5. java大数取余

    java大数取余: 类方法:BigInteger.divideAndRemainder() 返回一个数组,key = 0为商key = 1为余数 import java.util.*; import ...

  6. RabbitMQ --- Work Queues(工作队列)

    目录 RabbitMQ --- Hello Mr.Tua 前言 Work Queues 即工作队列,它表示一个 Producer 对应多个 Consumer,包括两种分发模式:轮循分发(Round-r ...

  7. 野生程序员对.NETFramework 4.0 ThreadPool的理解

    ThreadPool 类 提供一个线程池,该线程池可用于执行任务.发送工作项.处理异步 I/O.代表其他线程等待以及处理计时器. 命名空间:   System.Threading程序集:  mscor ...

  8. POI通过模板导出EXCEL文件

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

  9. Qt日常备注(函数/接口实现)

    1.判断QString是否为纯数字 2.查找自身最长重复子字符串 3.树形列表复选框操作 4.更改文件权限 5.判断系统64位 6.文件生成md5值 7.版本号比较(字符串比较) //-----实现- ...

  10. [Python] wxPython 状态栏组件、消息对话框组件 学习总结(原创)

    1.状态栏组件 1.基本介绍 上图: 红框框内的就是状态栏. 他可以分成若干个区块,比如上者分为了两个区块,并且比例是固定的,创建时可以指定 每个区块都能够显示 信息,一般通过 绑定事件 实时更新 各 ...