一.标准string类型

    string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。

1.1 string对象的定义和初始化

    当没有明确指定对象初始化时,系统将使用默认构造函数。

标准库类型

   注意:编程时一定要注意区分字符串字面值string数据类型的使用。

1.2 string对象的读写

    1. string类型的输入操作符:

  • 读取并忽略开头所有的空白字符(如空格、换行符、制表符)。
  • 读取字符直至再次遇到空白字符,读取终止。

     2.读入未知书目的string对象:

    string word; 
  // read until end-of-file , writing each to a new line 
    while(cin >> word)  
          cout<<word<<endl;  

     3用getline读取整行文本:getline并不忽略行开头的换行符,遇到换行符则停止读入并返回。

    string line;//每次输出一行文本  
    while(getline(cin, line))  
         cout<<line<<endl;  

    4、string对象比较操作是区分大小写的,即同一个字符的大小写形式被认为是两个不同的字符。任何一个大写字母都小于任意的小写字母。

    5、string对象的下标从0开始,如果s是一个string对象且s不空,则s[0]就是字符串的第一个字符,s[1]就是第二个,s[s.size()-1]则是最后一个字符。

     6、标准库不要求检查索引值,所有索引的下标越界是没有定义的,会导致严重错误。
 
1.3  string对象的操作
标准库类型

    1. string对象的长度指的是string对象中字符的个数,可以通过size操作获取。如s.size() ,返回s中字符的个数。

        如何判断string对象是否为空:

方法一:
if
( st.size() == 0) // ok:empt
方法二:
    if(st.empty())
        // ok:empty

     empty()成员函数将返回bool值,如果string对象为空则返回true,否则返回false。

     2.string::size_type类型

     任何存储string的size操作结果的变量必须为string::size_type类型。特别重要的是,不要把size的返回值赋给一个int变量。

      string类类型和许多其他库类型都定义了一些配套类型。通过这些配套类型,库类型的使用就能与机器无关。size_type就是这些配套类型中的一种。它定义为unsigned型(unsigned int或unsigned long)具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。

     3.string关系操作符

     string对象比较操作是区分大小写的,即同一个字符的大小写形式被认为是两个不同的字符。任何一个大写字母都小于任意的小写字母。

     两个string对象相等时指它们的长度相同,且含有相同的字符。

     关系操作符比较两个string对象时采用和(大小写敏感)字典排序相同的策略:

  • 如果两个string对象长度不同,且短的string对象与长的string对象的前面部分相匹配,则短的string对象小于长的string对象。
  • 如果两个string对象的字符不同,则比较第一个不匹配的字符。

     4.两个string对象相加

      string对象的加法被定义为连接。两个(或多个)string对象可通过加操作符+连接起来。

string s1("hello, ");
string s2("world\n");
string s3 = s1 + s2; // s3 is hello, world\n

     5.和字符串字面值的连接

      当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个事string类型的

      将两个字符串字面值相加,是非法的。

      6.string类型通过下标操作符([])来访问string对象中的单个字符,下标操作符需要一个size_type类型的值来表明要访问字符的位置。下标中的值被称为“下标”或“索引”。

      用下标操作符分别取出string对象的每个字符,分行输出:

string str("some string");
for(string::size_type ix = 0 ; ix != str.size() ; ++ix)
    cout<<str[ix]<<endl;

     应该用string::size_type类型的变量接收size函数的返回值。在定义用作索引的变量时,出于同样的道理,string对象的索引变量最好也用string::size_type类型。

    7.string对戏那个中字符的处理

标准库类型

相关文章: