Chinaunix首页 | 论坛 | 博客
  • 博客访问: 76649
  • 博文数量: 35
  • 博客积分: 1640
  • 博客等级: 上尉
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-05 11:44
文章分类

全部博文(35)

文章存档

2011年(1)

2008年(34)

我的朋友
最近访客

分类: C/C++

2008-05-05 12:58:03

常用的string操作:
s.empty( )             如果s为空串,则返回true,否则返回false。
s.size( )                 返回s中字符的个数。
s[n]                      返回s中位置为n的字符,位置从0开始计数。
s1 + s2                  把s1和s2连接成一个新字符串,返回新生成的字符串。
s1 = s2                  把s1内容替换为s2 的副本。
v1 == v2              比较v1和v2的内容,相等则返回true,否则返回false。
!=, <, <=, >, >=     保持这些操作符惯有的含义
 
string :: size_type类型
逻辑上讲,size()似乎该返回整型或无符号整型。但事实上,返回的是string::size_type类型。
string类类型和许多其它库类型都定义了一些配套类型(companion type),以使库类型的使用能与机器无关(machine-independent)。size_type就是其中一种。它定义为与unsigned型(unsigned int或 unsigned long)具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。为了使用由string类型定义的size_type类型,必须加上作用域操作符来说明所使用的size_type类型是由string类定义的。
注:任何存储string的size操作结果的变量必须为string:: size_type类型。特别重要的是,不要把size的返回值赋给一个int变量。

问题1:ss2的值分别是什么?

       string s;

       int main( ) {

              string s2;

       }

解析:

内置类型变量的初始化:

内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体里定义的内置类型变量不进行自动初始化。

未初始化的变量事实上都有一个值。编译器把该变量放到内存中的某个位置,而把这个位置的无论哪种位模式都当成是变量初始的状态。

类类型变量的初始化:

每个类都定义了该类型的对象可以怎样初始化:构造函数/默认构造函数。

大多数类都提供了默认构造函数,例如,string类定义了默认构造函数来初始化string变量为空字符串,即没有字符的字符串。

有些类类型没有默认构造函数。对于这些类型来说,每个定义都必须提供显示的初始化式。没有初始化值根本不可能定义这种类型的变量。

问题2:解释string类型的输入操作符和gelline函数分别如何处理空白字符。

解析:

string类型的输入操作符:

       读取并忽略开头所有的空白字符(如空格,换行符,制表符)

       读取字符直至再次遇到空白字符,读取终止。

getline读取整行文本:

       getline接受两个参数:一个输入流对象,一个string对象。从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符。

       和输入操作符不一样的是:getline并不忽略行开头的换行符。只要遇到换行符,即便它是输入的第一个字符,getline也将停止并返回。如果第一个字符就是换行符,则sring参数将被置成空string

 
阅读(392) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~