1. string支持的幾個構造函數:
string s1; | 默認構造函數,s1爲空串 |
string s2(s1); | 將s2初始化爲s1的一個副本 |
string s3("value"); | 將s3初始化爲一個字符串字面值副本 |
string s4(n,'c'); | 將s4初始化爲'c'的n個副本 |
========================================================================
例子:s1和s2的值是多少?
#include <iostream>
#include <string>
using namespace std;
string s;
int main()
{
string s1;
cout << "s: " << s << endl;
cout << "s1: " << s1 << endl;
return 0;
}
*******************************************************************
結果:均爲空字符串
s:
s1:
*******************************************************************
========================================================================
2. string類的讀寫
2.1 從標準輸入讀取string,並將讀入的串存儲在s中。string類型的輸入操作符:
2.1.1 讀取並忽略開頭所有的空白字符(如空格、換行符、製表符等);
2.1.2 讀取字符直至再次遇到空白字符,讀取終止。
******************************************************************
例子:
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
cin >> s1;
cout << "s1: " << s1 << endl;
return 0;
}</span></span>
結果:
輸入爲 " hello world "
輸出爲 "hello"
******************************************************************
2.2 getline函數
getline(istream &in, string &s)
從輸入流讀入一行到string s
•功能:
–從輸入流中讀入字符,存到string變量
–直到出現以下情況爲止:
•讀入了文件結束標誌
•讀到一個新行
•達到字符串的最大長度
–如果getline沒有讀入字符,將返回false,可用於判斷文件是否結束
=====================================================
注意:由於getline函數返回時丟棄換行符,換行符將不會存儲在string對象中。
=====================================================
3. 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 |
!= < <= | 保持這些操作符慣有的含義 |
> >= | 保持這些操作符慣有的含義 |
3.1 s.size() 返回值的類型爲:string::size_type類型。注意:不要將其返回值賦值給int型。
3.2 +
當進行string對象和字符串字面值混合連接操作時,+操作符的左右操作數必須至少有一個是string類型的。
注意字符串字面值是常量。
3.3 s[n]
引用下標是從0開始的。並且超出下標應用範圍,將溢出。可計算下標值,例如:s[n1+n2] n1、n2:整型
3.4 string對象中字符的處理
這些函數都在cctyoe頭文件中定義
isalnum(c) | 如果c是字母或者數字,則爲true |
isalpha(c) | 如果c是字母,則爲true |
iscntrl(c) | 如果c是控制字符,則爲true |
isdigit(c) | 如果c是數字,則爲true |
isgraph(c) | 如果c不是空格,但可打印,則爲true |
islower(c) | 如果c是小寫字母,則爲true |
isprint(c) | 如果c是可打印的字符,則爲true |
ispunct(c) | 如果c是標點符號,則爲true |
isupper(c) | 如果c是大寫字母,則爲true |
tolower(c) | 如果c是大寫字母,則返回其小寫字母形式,否則直接返回c |
toupper(c) | 如果c是小寫字母,則返回其大寫字母形式,否則直接返回c |
isxdigit(c) | 如果c是十六進制,則爲true |
isspace(c) | 如果c是空白字符,則爲true |