1.数组

数组是一种数据格式,能够存储多个同类型的值。

数组的初始化规则:

  1. 数组只有在定义的时候才能使用初始化。

  2. 初始化数组的时候,提供的值可以少于数组的元素数目。(其他元素会自动被设为0)

  3. 初始化下标从0开始

(注:求一个数组的长度。
eg:
short things[]={1,2,3,4};
int num_elements=sizeof things/sizeof(short);

2.字符串

字符串是存储在内存的连续字节中的一系列字符。

#代码2.1
#include<iostream>
#include<cstring>
int main()
{using namespace std;const int Size = 15;char name1[Size];char name2[Size] = "iDoit";char food[Size];cout << "你好,我的名字是" << name2;cout << "!\n你的名字是?\n";cin>> name1;cout << "hellow," <<name1<<"。\n";cout <<" 你最喜欢吃什么?" << endl;cin >> food;cout << "万万没想到,你竟然喜欢吃" << food << "\n\n\n"<<endl;system("pause");return 0;
}

当键盘输入姓名如“张三”,食物“辣椒”时(每个名词之间没有空格、制表符)。输出结果正确,如下所示

你好,我的名字是iDoit!
你的名字是?
张三
hellow,张三。你最喜欢吃什么?
辣椒
万万没想到,你竟然喜欢吃辣椒

但当姓名中包含空格或制表符,如输入姓名:“San Zhang”时,便得到下面结果:

你好,我的名字是iDoit!
你的名字是?
San Zhang
hellow,San。你最喜欢吃什么?
万万没想到,你竟然喜欢吃Zhang

对于c++的字符串输入:
cin使用空白(空格’ ‘、制表符’\t’和换行符’\n’)来确定字符串的结束位置。因此在读取一行字符串输入时,要将整条短语而不是一个单词作为字符串输入,需要采取另一种字符串读取方法,具体地说,需要采用面向行而不是面向单词的方法(这也就是产生上述情况的原因)。
istream中的类(如cin)提供了一些面向行的类成员函数:getline()和get()。这两个函数都读取一行输入,直到到达换行符。然而,getline()将丢弃换行符,而get()将换行符保留在输入序列中。
例如,假设要使用getline()将姓名读入到一个包含20个元素的name数组中,可以使用这样的函数调用:

cin.getline(name,20);

对于代码2.1修改为cin.getline(),其他代码不变,姓名输入:“San Zhang”,食物:“Pepper”得到的结果如下所示

你好,我的名字是iDoit!
你的名字是?
San Zhang
hellow,San Zhang。你最喜欢吃什么?
Pepper
万万没想到,你竟然喜欢吃Pepper

面向行的输入:get()

istream类中有另外一个名为get()的成员函数,他有几种变体,其中一种与getline()相似,他们接受的参数相同,解释的参数方式也相同,并且都读取到行尾。但不同的是get()并不再读取并丢弃换行符,而是将其留在输入队列中。假设我们连续两次调用get():

cin.get(name1,Size);
cin.get(name2,Size);//会出现问题

由于第一次调用后,换行符将留在输入队列中,因此第二次调用的时候看到第一个字符便是换行符,因此get认为到达了行尾,而没有发现任何可读取的内容。如果不借助帮助,get()将不能跨过该换行符。但是get()还有另外一种变体,使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符),因此它可以用来处理换行符,魏都区下一行做准备。即

cin.get(name1,Size);
cin.get();
cin.get(name2,Size);//正常读取

(注:无参数的cin.get()仅仅读取一个字符并在输入流中删除所读字符,不做其他任何操作)

另外一种写法是

cin.get(name1,Size).get();
cin.get(name2,Size);//正常读取

之所以这样做,是由于cin.get(name1,Size)个返回来的是一个对象,该对象随后将被用来调用get()函数。

C++之复合类型(一)相关推荐

  1. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  2. java 传 复合类型对象_struts复合类型传值(对象传值)

    01:导包,配置web.xml xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/ ...

  3. WebService大讲堂之Axis2(2):复合类型数据的传递

    在实际的应用中,不仅需要使用WebService 来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据.数组与类(接口)是比较常用的复合类型.在Axis2 中可以直接使用 ...

  4. mysql的复合类型_PLSQL 复合类型数据

    •复合类型是用户定义的 常用的复合类型有:属性 记录 表 数组 (1) 属性类型(引用数据库列的数据类型) %TYPE – 引用变量和数据库列的数据类型 如:empcode emp.empno%typ ...

  5. winform point数组带数值_带你学够浪:Go语言基础系列 - 8分钟学复合类型

    对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握.基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Gol ...

  6. C++Primer Plus (第六版)阅读笔记 + 源码分析【第四章:复合类型】

    第四章:复合类型 数组 第四章:复合类型 复合类型组成: 基本整型. 浮点类型. 数组:存储多个同类型的值.(一组特殊的数组可以存储字符串.) 结构体:存储多个不同类型的值. 指针:将数据所处位置告诉 ...

  7. 黑马程序员C语言基础(第八天)复合类型(自定义类型)(结构体)、共用体(联合体)、枚举enum、 typedef

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

  8. Golang的基本类型、引用类型、复合类型

    1.基础内置类型: 包括数值类型.字符串类型.布尔类型.数组等除5种引用类型和复合类型外都是基础内置类型.当对这些类型的值进行增加或者删除的时候会创建一个新值,因此当把这些类型的值传递给方法或者函数时 ...

  9. 复合类型_没有学不会的python--复合类型(1)--概念和元组

    其实复合类型并不复杂,对于没有学习过python的朋友来说,完全不用担心. 复合类型是什么? 前面我们有讲述过简单数据类型,由于我在多个平台都有上传文章,所以这里就不贴出链接来了,烦请有需要的朋友自己 ...

  10. C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】

    如题,什么是内置,或者复合类型??如果是 一般的float,int,或者一个结构体的引用,是不是不初始化会出问题?? 新手求解. 内置类型(built-in):像int double char这种C+ ...

最新文章

  1. 组件库实战 | 教你如何设计Web世界中的表单验证
  2. hdfs读写流程_深度探索Hadoop分布式文件系统(HDFS)数据读取流程
  3. 机器学习十大经典算法——线性回归
  4. pyQT实现自动找茬游戏
  5. Https 真的安全吗?可以抓包吗?如何防止抓包吗?
  6. [Swift]LeetCode452. 用最少数量的箭引爆气球 | Minimum Number of Arrows to Burst Balloons
  7. 长连接和短连接(转)
  8. java us ascii,在Java中,哪种编码方案是8位US ASCII?
  9. java的object类型转换_Java Object类型转换
  10. 编辑器漏洞、越权、逻辑漏洞(不安全的对象引用、功能级别访问控制缺失)
  11. 计算机的k代表什么意思,电脑CPU后缀K、U、HQ、M分别代表什么你清楚吗?
  12. 前端实战:利用CSS+HTML实现B站用户名片样式
  13. Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客
  14. Michaelの烦恼系列漫画第二季 | 神秘的小黑屋
  15. C++ 性能优化篇一《优化概述》
  16. Linux USB虚拟串口设备
  17. 腾讯位置服务地图SDK实现获取全国行政区划检索列表
  18. JAVA 虚拟机深入研究(二)——JVM虚拟机发展以及一些Java的新东西
  19. iOS crash 定位方式
  20. 如何获取网页上的图片

热门文章

  1. 安卓开发——为自己的app快速集成聊天功能
  2. django authentication_classes自定义权限验证类 authenticate
  3. ANTLR4权威参考手册(二)
  4. ios预览在线pdf
  5. 中国大学慕课MOOC测试题答案第三章Vim
  6. java访问未验证证书的HTTPS
  7. 黑马简单数据后台管理系统(SSM课程中段)
  8. java计算机毕业设计旅游管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  9. 利用pandas处理复杂表格
  10. 华南农业大学java实验_华南农业大学2016年农科Java上机实验.doc