设为首页 加入收藏

TOP

C++学习笔记之四 复合类型1(二)
2016-04-27 17:25:27 】 浏览:1472
Tags:学习 笔记 复合 类型
取了,然后再读第三条语句就没有影响了。

还有一种方式就是使用get()的方式将两个类成员函数拼接起来(合并),如下所示:

cin,get(name, ArSize).get();

同样,getline()也可以这么用:

cin.getline(name1,ArSize).getline(name2,ArSize);

还是上面的例子,可以这么表达:

\

从上面几个例子的对比我们可以总结一下,输入一行完整的字符串的方法有这么几种:使用cin.getline(name,20)或者使用cin.get(name,20).get()。那么我们应该选择使用哪一种呢

当然,都可以,但是使用get()输入更仔细。例如,假如使用get()将一行读入数组中,如何知道停止读取的原因是由于已经读取了整行,而不是由于数组已经填满了呢查看下一个字符,如果是换行符,说明已读取了整行,否则,说明该行中还有其他输入。总之,getline()使用起来更简单一些,但get()使得检查错误更简单些。

④混合输入字符串和数字

混合输入数字和面向行的字符串会导致跟上面同样的问题。

\

用户根本没有输入地址的机会,问题在于当cin读取年份之后,将回车键留在了输入队列中,后面的getline()看到换行符认为是一个空行,并将这个空字符串给了address数组。解决的方法也就是上面介绍的几种:

cin>>year;

cin.get();

或者(cin>>year).get(); 或者 (cin>>year).get(ch);

C++程序常使用指针(而不是数组)来处理字符串,以后会讲到。

(2)string类简介

ISO/ANSI C++98标准通过添加string类扩展了C++库,因此现在可以用string类型的变量而不是字符串数组来存储字符串。string类使用起来比数组简单,同时提供了将字符串作为一种数据类型的表示方法。

要使用string类,必须在程序中包含头文件string。string类位于名称空间std中,因此需要使用using namespace std;指令。string类定义隐藏了字符串的数组性质,使得处理字符串像处理普通变量那样简单。

看下面的例子:

\

下面是运行结果:

\

从上面这个例子中可以看到,string对象和使用字符数组有很多相同之处:

可以使用C风格字符串来初始化string对象;

可以使用cin来将键盘输入存储到string对象;

可以使用cout来显示string对象;

可以使用数组表示法来访问存储在string对象中的字符(即可以将string对象看作一个数组,可以访问其中的某一个元素)。

字符串数组和string对象的主要区别是:可以将string对象声明为简单变量,而不是数组:

string str1; string str2 = "panther";

类设计让程序能够自动处理string的大小。例如,str1的声明创建一个长度为0的string对象,但是将输入读取到str1中时,将自动调整str1的长度;这使得与数组相比string对象更方便,也更安全。

①赋值、拼接和附加

string类的操作比使用数组时更简单。例如,不能将一个数组赋给另一个数组,但可以将一个string对象赋给另一个string对象。例如: string str1; string str2 ="pantner"; str1 = str2;

string类简化了字符串的合并操作。可以使用运算符+将两个string对象合并起来,还可以使用运算符+=将字符串附加到string对象末尾。如 string str3; str3 = str1+str2; str1+=str2;

处理string对象的语法通常比使用C字符串函数简单,尤其是执行较为复杂的操作时。例如:

str3 = str1 + str2;

使用C-风格字符串时,需要使用的函数如下:strcpy(charr3,charr1); strcat(charr3, charr2);

另外,使用字符数组时总是存在目标数组过小而无法存储指定信息的危险,如下例:char site[10] = "house";

strcat(site, " of pancakes"); 函数strcat()试图将全部12个字符复制到数组site中,这将覆盖相邻的内存。这可能道枝程序终止或程序数据被破坏。而string类具有自动调整大小的功能,从而避免这种问题的发生。

确定字符串字数的方法也有区别:int len = str1.size(); int len2 = strlen(charr1);

②string类的I/O

可以使用cin或cout来输入存储到string对象或输出,其句法与处理C-风格字符串相同。但是每次读取一行而不是一个单词。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇二进制炸弹(第二次实验) 下一篇MFC、VC++综合作业题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目