1.「 」引號之間的字串 「abcdef」
2.char 陣列
char str[6] = {'H''e''\0'};//省略括號中的無語法問題,但陣列大小隻有3
char str[] = {'H''e'\0'}; //不規定陣列大小
(均以null’\0‘結尾) 字元陣列的大小要比所儲存的字元多1
3.封裝的字串類string
string st("acd"); //string st="acd";
cout << st << endl;
char ch;
char s[50];
scanf("%c",&ch);
printf("%c\n",ch);
char st[50];
scanf("%s",st); //以空格換行表示結束輸入
printf("%s",st);
getchar(); //輸入任意字元
char c=getchar(); //輸入字元復值給c
char s[40];
gets(s); // gets()輸入字元以換行結束
puts(s); // puts()括號輸出內容並換行
分兩種:
第一種:在標頭檔案iostream 中,是iostream的成員函數
cin.getline(字元指標,字元個數N,結束符)
char st[40];
cin.getline(st,30,' ');
cout<<st<<endl;
//輸入:aadadadawd aaaa
//輸出:aadadadawd
istream &getline( char *buffer, streamsize num, char delim );
istream &getline( char *buffer, streamsize num );
第二種:在標頭檔案string中
getline(輸入流,字元個數N,結束符)
函數原型
istream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
//用法和上第一種類似,但是讀取的istream是作為引數is傳進函數的。
//讀取的字串儲存在string型別的str中。
//is :表示一個輸入流,例如 cin。
//str :string型別的參照,用來儲存輸入流中的流資訊。
//delim :char型別的變數,所設定的截斷字元;在不自定義設定的情況下,遇到’\n’,則終止輸入。
string st;
getline(cin,st);
string st; //輸入:aaa ccc
getline(cin,st,' '); //輸出:aaa
C標頭檔案include<string.h>
C++標頭檔案cstring
strlen() 長度
strcpy() 複製
strcat() 拼接
strcmp() 比較
strstr()
char s[40],t[40];
cin>>s>>t;
cout<<strcmp(s,t)<<endl; //如果s==t 返回0 s>t 返回1 s<t返回-1
char s[40]="acddef",t[40];
strcpy(t,s);
cout<<t<<endl; //輸出:acddef
char s[40]="acddef",t[40]="def";
char *index=strstr(s,t);
cout<<index<<endl; //輸出:def
size_t strlen(const char*);
char* strcmp(const char*, const char*);
char* strncmp(const char*, const char*, size_t);
char* strcat(char*, const char*);
char* strcpy(char*, const char*);
char* strncat(char*, const char*, size_t);
char* strncpy(char*, const char*, size_t);
/*呼叫函數strrchr和strchr時,第二個實參可以是字元。*/
/*雖然函數原型中第二個引數的型別是int,但字元在計算機中的儲存形式是其ASCII碼,因此可直接用int型別進行讀取。*/
char* strrchr(const char* s, int c); //查詢字串s中是否有字元c,若有則返回該字元最後一次出現的地址,若無則返回空指標
char* strchr(const char* s, int c); //查詢字串s中是否有字元c,若有則返回該字元首次出現的地址,若無則返回空指標
char* strstr(const char* s1, const char* s2);//查詢字串s1中是否有字串s2,若有則返回該字串首次出現的首地址,若無則返回空指標
char* strpbrk(const char* s1, const char* s2);//查詢字串s1中是否有字串s2中的部分內容,若有則返回該部分字串在s1中首次出現的首地址,若無則返回空指標
標頭檔案include string
string 對一些運運算元進行了過載
合併: +
比較:>= > == < <=
string s1="aaa",s2="ccc";
string s=s1+s2;
cout<<s<<endl; //輸出:aaaccc
string s1="abc",s2="abcd";
if(s1>s2)cout<<"1"; //字串比較大小
else cout<<"0";
常用簡單的類方法:
size() 當前字串大小
capacity() 容量
empty() 判斷字串是非為空
length() 當前字串長度
1.KMP 串匹配
2.manacher馬拉車
3.字串hash
4.字首陣列 字尾陣列