string類的定義、操做。ios
#include<iostream> #include<string> using namespace std; int main() { // 4 declare string s1; //default string s2( s1 ); string s3( "hello" ); string s4( 9, 's' ); //read and write string s_1, s_2; cin>>s_1>>s_2; //igore blank in head, find blank in tail will end; cout<<s_1<<endl; //讀入未知數目的文本 string word; while( cin>>word ) //read until end-of -file { cout<<word<<endl; if( word == "exit" ) { cout<<"exit success"<<endl; break; } } //用getline讀取整行文本,getline不會保存換行符 string line; while( getline( cin, line ) ) { cout<<line<<endl; if( line == "exit" ) { cout<<"exit success"<<endl; break; } } //string.size() and string.empty string str_size; cout<<"test string size"<<endl; cin>>str_size; if( str_size.empty() ) cout<<"string is empty"<<endl; else cout<<"string is not empty"<<endl; //配套類型string::size_type實現與及其無關;int 型變量容易出錯,不便移植;unsigned 可用於string::size_type可用的地方。 //關係操做符==、+=、<、<=、>、>=,使用字典順序排序 string big = "big", small = "small", substr = "hello",phrase = "hello world"; //substr 小於 phrase //string賦值,有效率上的問題 string str1, str2 = "value assignment come with efficent problem"; str1 = str2; //string對象相加 str2 = "c plus plus"; str1 = "hell"; str2 += str1; //和字符串字面值的鏈接,必須用string類型做爲左值 str1 = str2 + "hello world" + "!!!"; //下標操做string單個字符 for( string::size_type ix = 0; ix != str1.size(); ix++ ) { cout<< str1[ix] <<endl; str1[ix] = '*'; } //下標值計算 str1[2*1] = 'a'; cout<<str1<<endl<<"下標計算"<<endl; //string中單個字符處理 cout<<"單個字符的處理"<<endl; if( ispunct(str1[2]) ) cout<<"str1[2] 是一個標點"<<endl; string s; cout<<s[0]<<endl; //越界 return 0; }
操做單個字符時使用cctype定義的函數,知足條件則爲true:git
isalnum(c) 是字母或數字函數
isalpha(c) 是字母spa
iscntrl(c) 是控制字符對象
isdigit(c) 是數字blog
isgraph(c) 不是空格,可打印排序
islower(c) 小寫字母ci
isprint(c) 可打印字符字符串
ispunct(c) 標點符號get
isspace(c) 空白字符
isupper(c) 大寫字母
isxdigit(c) 十六進制數
tolower(c) 是大寫字母時返回小寫字母,不然返回c
toupper(c) 是小寫字母時返回大寫字母,不然返回c