相关的额数组,指针操作在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的感觉有很多相同的地方,在这里就不介绍啦。。。。。。。。。。。。。。。相互学习,如果错误,欢迎指出,共同进步!