#include <iostream> #include <string> using namespace std; int main() { string str; cin>>str; //主要字符串是從0開始計數的 cout<<"ab在str中的位置:"<<str.find("ab")<<endl; //返回第一次出現ab的位置,沒有則返回一串亂碼 cout<<"ab在str[2]到str[n-1]中的位置:"<<str.find("ab",2)<<endl; //返回第一次從str[2]開始出現ab的位置,沒有則返回一串亂碼 cout<<"ab在str[0]到str[2]中的位置:"<<str.rfind("ab",2)<<endl; //返回ab在str[0]到str[2]中的位置,沒有則返回一串亂碼 return 0; }
輸入1ios
sdefdwefdadabbababab
輸出1數組
ab在str中的位置:11 ab在str[2]到str[n-1]中的位置:11 ab在str[0]到str[2]中的位置:18446744073709551615 Program ended with exit code: 0
輸入2app
abfeofihwabab
輸出2ide
ab在str中的位置:0 ab在str[2]到str[n-1]中的位置:9 ab在str[0]到str[2]中的位置:0 Program ended with exit code: 0
輸入3函數
asdfghjk
輸出3ui
ab在str中的位置:18446744073709551615 ab在str[2]到str[n-1]中的位置:18446744073709551615 ab在str[0]到str[2]中的位置:18446744073709551615 Program ended with exit code: 0
#include <iostream> #include <string> using namespace std; int main() { string str; cin>>str; cout<<"返回str[3]及其之後的子串:"<<str.substr(3)<<endl; //若小於限制長度則報錯 cout<<"從ste[2]開始由四個字符組成的子串:"<<str.substr(2,4)<<endl; //若小於限制長度則報錯 return 0; }
輸入1this
asdfghjkl;'/.,mnbvcxz
輸出1spa
返回str[3]及其之後的子串:fghjkl;'/.,mnbvcxz 從ste[2]開始由四個字符組成的子串:dfgh Program ended with exit code: 0
示列1指針
#include <iostream> #include <string> using namespace std; int main() { string line = "this@ is@ a test string!"; line = line.replace(line.find("@"), 1, ""); //從第一個@位置替換第一個@爲空 cout<<line<<endl; return 0; }
輸出code
his is@ a test string! Program ended with exit code: 0
示列2
#include <iostream> #include <string> using namespace std; int main() { string line = "this@ is@ a test string!"; line = line.replace(line.begin(), line.begin()+6, ""); //用str替換從begin位置開始的6個字符 cout << line << endl; return 0; }
示列3
#include <iostream> #include <string> using namespace std; int main() { string line = "this@ is@ a test string!"; char* str = "12345"; line = line.replace(0, 5, str); //用str替換從指定位置0開始長度爲5的字符串 cout << line << endl; return 0; }
輸出
12345 is@ a test string! Program ended with exit code: 0
#include <string> #include <iostream> using namespace std; int main() { string str; cin>>str; cout<<"從2號位置插入字符串jkl並造成新的字符串返回:"<<str.insert(2, "jkl")<<endl; return 0; }
輸入
sdfgh
輸出
從2號位置插入字符串jkl並造成新的字符串返回:sdjklfgh Program ended with exit code: 0
#include <iostream> #include <string> using namespace std; int main() { string str; cin>>str; cout<<"在字符串str後面添加字符串ABC:"<<str.append("ABC")<<endl; return 0; }
輸入
diguwhdcow
輸出
在字符串str後面添加字符串ABC:diguwhdcowABC Program ended with exit code: 0
#include <iostream> #include <string> using namespace std; int main() { string str1,str2; cin>>str1>>str2; cout<<"str1:"<<str1<<endl; cout<<"str2:"<<str2<<endl; swap(str1, str2); cout<<"str1:"<<str1<<endl; cout<<"str2:"<<str2<<endl; }
輸入
qwertyui asdfghjk
輸出
str1:qwertyui str2:asdfghjk str1:asdfghjk str2:qwertyui Program ended with exit code: 0
#include <iostream> #include <string> using namespace std; int main() { string str1,str2; cin>>str1>>str2; cout<<str1.compare(str2)<<endl; return 0; }
輸入
diwguc aschsdnv
輸出
3 Program ended with exit code: 0
size()函數和length()函數
#include <iostream> #include <string> using namespace std; int main() { string str1; cin>>str1; cout<<str1.size()<<endl; cout<<str1.length()<<endl; return 0; }
輸入
dchiascnsc
輸出
10 10 Program ended with exit code: 0
複製字符串s2到s1
鏈接s2到s1的末尾
返回字符串s1的長度
若s1和s2是相同的,則返回0,s1< s2,返回值小於0,若s1>s2,返回值大於0
返回一個指針,指向字符串s1中字符ch第一次出現的位置
返回一個指針,指向字符串s1中字符串s2的第一次出現位置
從源src所指的內存地址的起始位置開始拷貝n個字節到目標dest所指的內存地址的起始位置中strcpy與memcpy的區別:一、複製的內容不一樣。strcpy只能複製字符串,而memcpy能夠複製任意內容,例如字符數組、整型、結構體、類等。二、複製的方法不一樣。strcpy不須要指定長度,它遇到被複制字符的串結束符"\0"才結束,因此容易溢出。memcpy則是根據其第3個參數決定複製的長度。三、用途不一樣。一般在複製字符串時用strcpy,而須要複製其餘類型數據時則通常用memcpy