C++学习序列笔记之数据处理(复合类型)
来源:互联网 发布:html5 javascript手册 编辑:程序博客网 时间:2024/05/22 06:50
相关的额数组,指针操作在C里面也谈得比较详细,下面就谈谈C++里面跟C不一样的地方。
首先,字符串的输入。在C里面,使用scanf(”%s”,str),来输入字符串的,在C++里面当然也可以,但是C++还有自己的方式输入字符串:Cin.
也许有人说,这只是C++里面的一个输入流对象,有什么好说的?其实也没什么复杂,但是有一些细节的地方关于字符串操作的地方,我觉得还是有必要提出来注意一下。
比如:输入一个单词,你知道cin>>str;如果我需要输入两个单词,你也许会说,简单,cin>>str1,cin>>str2,这样多一次cin不就行了么?可事实是这样么?
我们看下面一个例子:
#include<iostream.h>
Int main()
{
Const int Size=20;
Char name[Size];
Char dessert[Size];
Cout<<”Enter your name:\n”;
Cin>>name;
Cout<<”Enter your favourate dessert:”;
Cin>>dessert;
Cout<<”I have some deliciout ”<<dessert<<”for you ”<<name<<endl;
return 0;
}
程序的用途很简单,就是输入两个字符串,那么结果是什么呢?
如果提示:Enter your name
我们就输入:wu
然后再提示:Enter your favourate dessert
我们再输入:pizza
我们的期望是:I have some deliciout pizza for you wu
可结果却不是,当我们输入;wu(空格)pizza时,按enter键,那么控制台就输出:
I have some deliciout pizza for you wu
而不再提示:Enter your favourate dessert
为什么会这样呢?我们不是已经输入了么?其实,cin是C++是一个流处理对象,它处理的原理是:有一个流处理缓冲区,调用一个cin就是从缓冲区里面读一次,而每次结束的标识是遇到空格,我们知道上面输入的时候输入了一个空格,那么就不会在提示一次Enter your favourate dessert,而是直接读取流缓冲区里面的东西,所以就不会出现后面的提示。
那么我们怎么解决这种情况呢?
1、 用cin.getline(str,size)面向输入行的函数,可以解决这种问题,这个函数是根据有没换行符来判断是否一次输入的。
2、 可以同过cin.get()函数过滤掉第一次输入时空格后面的,即
通过cin>>name;cin.get();cin>>dessert;方法来过滤掉第一次输入空格后面的内容,但是这种方法不是很方便,如果有更多空格,那么一个空格就是一个cin.get(),将是一个非常麻烦的事情。
补充一点:关于指针内存申请和回收的操作,只要坚持一个原则:如果定义一个指针数组,那么delete的时候要加上delete[],如果不是,那么直接用delete就行啦
例如:int *p=new int; 那么 delete p;如果是int *p=new int[10],那么delete [] p;
好啦,关于符合类型的,就讲这么多其他的关于数组,字符串的操作,联合体的内容,C++跟C的感觉有很多相同的地方,在这里就不介绍啦。。。。。。。。。。。。。。。相互学习,如果错误,欢迎指出,共同进步!
- C++学习序列笔记之数据处理(复合类型)
- C语言学习笔记(4)类型转化,复合类型
- C语言学习笔记(五)——复合类型
- c++primer学习笔记-----2.3复合类型
- c++学习笔记之复合类型(c++ primer plus)
- c++学习笔记(1)复合类型
- C++学习笔记之六 复合类型之共用体
- C++学习笔记:复合类型
- C++Primer之复合类型
- C++学习笔记之四 复合类型1
- C++学习笔记之七 复合类型---枚举
- C++学习笔记之五 复合类型之结构体(struct)
- 有章法的学习c++(9)复合类型(二)
- 【C++ Primer】第四章学习笔记 (复合类型)
- 《c++primer笔记》复合类型--引用
- c++primer笔记--2.3复合类型
- 【C++PrimerPlus6学习笔记】之三:复合数据类型(第四章)
- C++学习之路(21)---复合类型
- 企业实现知识管理的难点和解决方法
- 原创:struts2+json+android开发整合解析终结
- DAS、NAS和SAN概念与应用的简单比较
- 第一次安装完ubuntu后应该设置
- oracle RAC Cache fusion算法
- C++学习序列笔记之数据处理(复合类型)
- Java异常处理总结
- java json javascript
- CRect结构
- sql2005数据库(转换成)迁移到DB2
- java变量存在哪?----java的“变量池”
- C#编码创造一个DataSet
- linux目录详解
- 原创:没有信用卡如何在iTunes注册帐号?