字符串可以用字符數(shù)組表示也可以用string類型的變量表示。
每個(gè)常用字符都對(duì)應(yīng)一個(gè)-128 ~ 127的數(shù)字,二者之間可以相互轉(zhuǎn)化。注意:目前負(fù)數(shù)沒(méi)有與之對(duì)應(yīng)的字符。
常用ASCII值:‘A’- 'Z’是65 ~ 90,‘a(chǎn)’ - 'z’是97 - 122,0 - 9是 48 - 57。
字符可以參與運(yùn)算,運(yùn)算時(shí)會(huì)將其當(dāng)做整數(shù)。
二、字符數(shù)組字符串就是字符數(shù)組加上結(jié)束符’\0’。
可以使用字符串來(lái)初始化字符數(shù)組,但此時(shí)要注意,每個(gè)字符串結(jié)尾會(huì)暗含一個(gè)’\0’字符,因此字符數(shù)組的長(zhǎng)度至少要比字符串的長(zhǎng)度多 1 !
#includeusing namespace std;
int main()
{char a1[] = {'C', '+', '+'}; // 列表初始化,沒(méi)有空字符
char a2[] = {'C', '+', '+', '\0'}; // 列表初始化,含有顯示的空字符
char a3[] = "C++"; // 自動(dòng)添加表示字符串結(jié)尾的空字符
char a4[6] = "Daniel"; // 錯(cuò)誤:沒(méi)有空間可以存放空字符
return 0;
}
字符數(shù)組的輸入輸出
#includeusing namespace std;
int main()
{char str[100];
cin >>str; // 輸入字符串時(shí),遇到空格或者回車(chē)就會(huì)停止
cout<< str<< endl; // 輸出字符串時(shí),遇到空格或者回車(chē)不會(huì)停止,遇到'\0'時(shí)停止
printf("%s\n", str);
return 0;
}
字符數(shù)組的常用操作
(1)strlen(str)
,求字符串的長(zhǎng)度
(2)strcmp(a, b)
,比較兩個(gè)字符串的大小,a< b返回-1,a == b返回0,a >b返回1。這里的比較方式是字典序!
(3)strcpy(a, b)
,將字符串b復(fù)制給從a開(kāi)始的字符數(shù)組。
可變長(zhǎng)的字符序列,比字符數(shù)組更加好用。需要引入頭文件:
#include
定義和初始化
#include#includeusing namespace std;
int main()
{string s1; // 默認(rèn)初始化,s1是一個(gè)空字符串
string s2 = s1; // s2是s1的副本,注意s2只是與s1的值相同,并不指向同一段地址
string s3 = "hiya"; // s3是該字符串字面值的副本
string s4(10, 'c'); // s4的內(nèi)容是 "cccccccccc"
return 0;
}
string上的操作
#include#includeusing namespace std;
int main()
{string s1, s2;
cin >>s1 >>s2;
cout<< s1<< s2<< endl;
return 0;
}
使用getline讀取一整行
#include#includeusing namespace std;
int main()
{string s;
getline(cin, s);
cout<< s<< endl;
return 0;
}
string的empty和size操作
#include#includeusing namespace std;
int main()
{string s1, s2 = "abc";
cout<< s1.empty()<< endl;//0
cout<< s2.empty()<< endl;//1
cout<< s2.size()<< endl;
return 0;
}
string的比較
支持 >,<, >=,<=, ==, !=等所有比較操作,按字典序進(jìn)行比較。
為string對(duì)象賦值
string s1(10, 'c'), s2; // s1的內(nèi)容是 cccccccccc;s2是一個(gè)空字符串
s1 = s2; // 賦值:用s2的副本替換s1的副本
// 此時(shí)s1和s2都是空字符串
兩個(gè)string對(duì)象相加
#include#includeusing namespace std;
int main()
{string s1 = "hello, ", s2 = "world\n";
string s3 = s1 + s2; // s3的內(nèi)容是 hello, world\n
s1 += s2; // s1 = s1 + s2
}
字面值和string對(duì)象相加
做加法運(yùn)算時(shí),字面值和字符都會(huì)被轉(zhuǎn)化成string對(duì)象,因此直接相加就是將這些字面值串聯(lián)起來(lái):
string s1 = "hello", s2 = "world"; // 在s1和s2中都沒(méi)有標(biāo)點(diǎn)符號(hào)
string s3 = s1 + ", " + s2 + '\n';
當(dāng)把string對(duì)象和字符字面值及字符串字面值混在一條語(yǔ)句中使用時(shí),必須確保每個(gè)加法運(yùn)算符的兩側(cè)的運(yùn)算對(duì)象至少有一個(gè)是string:
string s4 = s1 + ", "; // 正確:把一個(gè)string對(duì)象和有一個(gè)字面值相加
string s5 = "hello" + ", "; // 錯(cuò)誤:兩個(gè)運(yùn)算對(duì)象都不是string
string s6 = s1 + ", " + "world"; // 正確,每個(gè)加法運(yùn)算都有一個(gè)運(yùn)算符是string
string s7 = "hello" + ", " + s2; // 錯(cuò)誤:不能把字面值直接相加,運(yùn)算是從左到右進(jìn)行的
處理string對(duì)象中的字符
可以將string對(duì)象當(dāng)成字符數(shù)組來(lái)處理:
#include#includeusing namespace std;
int main()
{string s = "hello world";
for (int i = 0; i< s.size(); i ++ )
cout<< s[i]<< endl;
return 0;
}
或者使用基于范圍的for語(yǔ)句:
#include#includeusing namespace std;
int main()
{string s = "hello world";
for (char c: s) cout<< c<< endl;
for (char& c: s) c = 'a';
cout<< s<< endl;
return 0;
}
字符串是計(jì)算機(jī)與人類溝通的重要手段?!Z學(xué)燦
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧