內(nèi)置數(shù)組是一種更基礎(chǔ)的類型限寞,string和vector都是對(duì)它的某種抽象忍啸。
- string表示可變長的字符序列。
- vector表示存放給定類型的可變長度履植。
命名空間的using聲明
形式如:using namespace::name;
定義和初始化string對(duì)象
初始化操作
#include<iostream>
using std::string;
int main()
{
string s1;//默認(rèn)初始化
string s2(s1);//s2是s1的副本(直接初始化)
string s3("value");//將value字面值除了空字符外都給了s3
string s3 = "value";//和上面的一樣(用了等于號(hào)计雌,是拷貝初始化)
string s4(10, 'c');//內(nèi)容為10個(gè)C(直接初始化)
system("pause");//
return 0;
}
string對(duì)象上的操作
string的操作 | |
---|---|
os<<s | 將s寫入輸出流os種,返回os |
is>>s | 讀取字符串賦給s玫霎,以空白分割 |
getline(is,s) | 從is中讀取一行賦給s,返回is |
s.empty() | s為空時(shí)返回true凿滤,否則返回false |
s.size() | 返回s中字符的個(gè)數(shù) |
s[n] | 返回s中第n個(gè)字符的引用,n從0開始 |
s1+s2 | 返回s1和s2連接后的結(jié)果 |
s1==s2 | 是否相等 |
s1庶近!=s2 | 等性判斷對(duì)字母大小寫敏感 |
<, <=, >, >= | 利用字符在字典中的順序進(jìn)行比較翁脆,且對(duì)字母的大小寫敏感 |
讀寫string
- 會(huì)自動(dòng)忽略開頭空白(空格,換行鼻种,制表符)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
cout << s << endl;
system("pause");
return 0;
}
寫入未知個(gè)數(shù)操作
- cin會(huì)將空格斷開
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
while (cin >> s)
cout << s << endl;
system("pause");
return 0;
}
使用getline讀取一整行
- 在讀入的字符串中保留空格反番,直到遇到換行符為止
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
while (getline(cin,s)) //可以讀入空格
cout << s << endl;
system("pause");
return 0;
}
string的比較
- (1)比較時(shí)長度不同,但是短的和長的對(duì)應(yīng)位置相同叉钥,短的小于長的罢缸。
- (2)比較時(shí)對(duì)應(yīng)位置不一樣,對(duì)應(yīng)位置的字符比較大小投队。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1 = "hello";
string s2 = "hello ss";
string s3 = "hi";
system("pause");
return 0;
}
-
s3 > s2 > s1
string的相加
- 字面值不能相加
- 必須有string對(duì)象的參與
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1 = "hello"+","; //錯(cuò)誤枫疆,沒有包含string
string s2 = "hello ss"+s1; //正確
string s3 = "hi"+s2+"<";//正確
string s4 = "hello" + ","+s1;//前兩個(gè)沒有包含string
system("pause");
return 0;
}
參考:C++primer 第五版