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

做下总结:

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. year:2017 month:8 day:3

    2017-08-03 JAVAse 1:静态变量和成员变量的区别: 所属不同:静态变量属于类,所以也称为类变量 成员变量属于对象,也称为实例变量 内存中位置不同:静态变量存储余方法区的静态区 成员变量 ...

  2. [译] 所有你需要知道的关于完全理解 Node.js 事件循环及其度量

    原文地址:All you need to know to really understand the Node.js Event Loop and its Metrics 原文作者:Daniel Kh ...

  3. 防止DDoS攻击的方式

    针对企业的DDoS攻击持续增长,根据Akamai的调查报告,2015年DDoS攻击增长了史无前例的180% !面对 DDoS 攻击性挑战,我们应该建立有效的防御体系来抵御攻击.   1.网站IP减少公 ...

  4. Spring Boot整合Dubbo使用及开发笔记

    一.概述: Spring Dubbo是我开发的一个基于spring-boot和dubbo,目的是使用Spring boot的风格来使用dubbo.(即可以了解Spring boot的启动过程又可以学习 ...

  5. HttpRequest 类

    关于此类的介绍:查看HttpRequest类 点击查看:HttpRequest中方法的封装 跟这个类对应的HttpResponse类 定义:使 ASP.NET 能够读取客户端在 Web 请求期间发送的 ...

  6. css 实现三角形、圆形

    .div { width:0px; height:0px; border:100px solid red; border-color:red red transparent transparent; ...

  7. Linux配置全局jdk

    Linux配置全局jdk 1.确保相应文件夹下有apache-tomcat和jdk的压缩文件 注意:jdk文件必须为适应Linux版本的文件 (如果已经有了相应文件,可以跳过以下第2-3个步骤) 2. ...

  8. HTML 贝塞尔曲线

    1.二次贝塞尔曲线 <canvas id="myCanvas" width="300" height="150" style=&quo ...

  9. 使用ExpressionVisitor进行lambadaExpression的动态拼接

    现有如下实体 public class User { public int Id { get; set; } public string Name { get; set; } } 根据这个实体创建一个 ...

  10. python学习之字符串(上)

    字符串python 的字符串被划归为不可变序列这一类别,意味着这些字符串所包含的字符存在从左至右的位置顺序,并且他们不可以在原处修改. 字符串常量单引号  'spam'双引号  "spam& ...