首页 > 代码库 > 3.2 标准库类型string(上)

3.2 标准库类型string(上)

#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;

//string定义在命名空间std中
int main()
{

/**************3.2.1 定义和初始化string*****************/

    string s1;                          //默认初始化,S1是一个空字符串
    string S2 = s1;                     //S2时S1的副本
    string s3 = "hello lijun";          //S3是字面值hello lijun的副本

    /*注意:
    1,什么叫string?
       可变长的字符序列
    2,什么叫字面值?
    3,字符串字面值结尾的空字符不会被赋给字符串
      空字符是字符串的终止符尔不是字符序列的终止符
      */

    /*直接初始化和拷贝初始化
    当初始值只有一个时使用直接初始化或拷贝初始化都是可以的
    多值初始化做好用拷贝初始化*/

    string s4(10, a);                 //s4的内容是10和c
    //string s4(1,"hello lijun");       //错误

    string s5(s4);                      //s4是s1的副本,与9 line类似
    string s6("hello lijun");           //s3是字面值“hello lijun"的副本
    //string s6(hello lijun);           错误
    string s7 = string (10, a);       //显示的创建一个临时对象用于拷贝
    /*
    其效果等价于:string temp (10, ‘a‘)
               string s7 = temp; 
    */

    /*******************3.2.2 string对象上的操作**************/

    //一个类除了要定义初始化方式外还需要定义对象上所能执行的操作。
    
    //-------1读写操作-----------
    string s;
    cin >> s;
    cout << s << endl;
    //在执行读取操作时,string会自动忽略开头的空白(空格,换行,制表等)
    //并从第一个真正的字符开始读起,知道遇见下一个空白为止。
    //返回左侧的运算符作为运算结果


//-------2读取未知数量的string对象-----------
    string word;
    while ((cin >> word) && (word != "END"))//自动以END作为结束标志符
        cout << word << endl;
    //注意字符串中含有空格时的输出
    

    //-------3使用getline 读取一整行-----------
    //-------empty和size的用法-----------
    //s.empty()根据string对象是否为空返回一个对应的bool变量
    //s.zize()函数返回string的长度
    //其实s.zize()返回的是string::size_type类型,这是一种新的类型
    //string类及其它大多数标准库类型都定义了几种配套的类型
    //这些配套类型体现了标准库类型的机器无关性
    //所有用于存放string类的size函数返回值的变量都应该用string::size_type类型
    //s.zize()返回的是unsigned类型的值,不可用int混用

    
    string line;
    while (getline(cin, line, #))//注意结束标志位
    {
        if (!line.empty())                    //只输出非空行
        {
            cout << line << endl;

        }
        auto len = line.size();
        cout << len;        
    }
    
    
    return 0;
}

 

3.2 标准库类型string(上)