C++Primer——string

来源:互联网 发布:新浪微博数据 编辑:程序博客网 时间:2024/06/04 14:35
转自:blog.csdn.net/minpro

常用的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:s 和 s2 的值分别是什么?

       string s;

       int main( ) {

              string s2;

       }

解析:

内置类型变量的初始化:

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

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

类类型变量的初始化:

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

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

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

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

解析:

string 类型的输入操作符:

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

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

getline 读取整行文本:

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

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

原创粉丝点击