3.2 標準庫類型string(上)
阿新 • • 發佈:2017-06-03
讀寫 什麽 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(上)