1. 程式人生 > >3.2 標準庫類型string(上)

3.2 標準庫類型string(上)

讀寫 什麽 empty lin 標準庫 urn 錯誤 序列 nbsp

#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(上)