字串總結

2021-09-05 11:13:14 字數 1933 閱讀 7770

字串輸入輸出

getchar()與putchar()

#include //#include using namespace std;

int main()

}

兩種輸入方式

scanf("%c",&x); 只讀取乙個字元

scanf("%s",&x);遇到空格,換行才會停止

cin與scanf("%s",&x)的作用大致相同

c:char st[100];

1. 字串長度

strlen(st);

2. 字串比較

strcmp(st1,st2);

strncmp(st1,st2,n);   把st1,st2的前n個進行比較。

3. 附加

strcat(st1,st2);

strncat(st1,st2,n);   n表示連線上st2的前n個給st1,在最後不要加'\0'。

4. 替換

strcpy(st1,st2);

strncpy(st1,st2,n); n表示複製st2的前n個給st1,在最後要加'\0'。

5. 查詢

where = strchr(st,ch)   ch為要找的字元。

where = strspn(st1,st2); 查詢字串。

c++:

string str;

1. 字串長度

len = str.length();

len = str.size();

2. 字串比較

可以直接比較

也可以:

str1.compare(str2); 

str1.compare(pos1,len1,str2,pos2,len2); 值為負,0 ,正。

3. 附加

str1 += str2;

或4. 字串提取

str2 = str1.substr();

str2 = str1.substr(pos1);

str2 = str1.substr(pos1,len1);

5. 字串搜尋

where = str1.find(str2);

where = str1.find(str2,pos1); pos1是從str1的第幾位開始。

where = str1.rfind(str2); 從後往前搜。

6. 插入字串

不是賦值語句。

str1.insert(pos1,str2);

str1.insert(pos1,str2,pos2,len2);

fgets函式

函式原型:char *  fgets(char * s, int n,file *stream);

引數:

s: 字元型指標,指向儲存讀入資料的緩衝區的位址。

n: 從流中讀入n-1個字元

stream : 指向讀取的流。

stringstream的使用,stringstream以前使用的時候還不覺得它很有用,但用的次數多了以後,就感覺到了它的用處,最大的作用就是分割字串了,目前來講。

一下就是一道題的輸入**,輸入若干行整數,每行若干個整數,先用getline一行一行的讀進來再切割。

string line;

if(!getline(cin,line)) return false;

stringstream ss(line);

n=0;

int x;

while(ss>>x) a[n++]=x;

sscanf函式

sscanf(要輸入的字串,格式,接受的變數)

sscanf(&s[1],"%d",&v);

字串總結?

其實就是模板彙總好伐 1 字串hash 可以解決一切字串問題。複雜度成迷。include using namespace std define maxn 10000 define read x scanf d x define maxm 1500 define ull unsigned long l...

字串總結

1 找出回文子串 分析 對於回文子串,最深的印象就是正序和倒序產生的字元相同。其實更深刻的表述方式應該是去除首尾字元後,裡面的依然是個回文子串。這一點也是我沒有想到的。利用動態規劃,相當於乙個遞迴歸納的想法,只要s i 1 j 1 是個回文子串,那麼在s i s j 時,s i j 就是個回文子串。...

字串 總結

一級目錄 輸入字元 cin 不得輸入空格 a getchar 可輸入空格 可輸入空格 gets a fgets a,sizeof a stdin 注意 當使用gets 和fgets 給字元陣列賦值時,前面如果使用過cin輸入,則需要getchar 吸收上一次輸入時剩下的回車 isdigit int ...