C++常見的字符串處理函數

C++常見的字符串處理函數

include< string >

1. 應用於查找的find()函數

#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

2. 子串substr()函數

#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

3. 替換replace()函數

示列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

4. 插入:insert()函數

#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

5. 添加字符串:append()函數

#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

6. 交換字符串:swap()函數

#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

8. 字符串比較函數:compare()

#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

7. 字符串大小

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

include< string.h >

strcpy(s1,s2)

複製字符串s2到s1

strcat(s1,s2)

鏈接s2到s1的末尾

strlen(s1)

返回字符串s1的長度

strcmp(s1,s2)

若s1和s2是相同的,則返回0,s1< s2,返回值小於0,若s1>s2,返回值大於0

strchr(s1,ch)

返回一個指針,指向字符串s1中字符ch第一次出現的位置

strstr(s1,s2)

返回一個指針,指向字符串s1中字符串s2的第一次出現位置

memcpy (void dest, const void src, int size)

從源src所指的內存地址的起始位置開始拷貝n個字節到目標dest所指的內存地址的起始位置中strcpy與memcpy的區別:一、複製的內容不一樣。strcpy只能複製字符串,而memcpy能夠複製任意內容,例如字符數組、整型、結構體、類等。二、複製的方法不一樣。strcpy不須要指定長度,它遇到被複制字符的串結束符"\0"才結束,因此容易溢出。memcpy則是根據其第3個參數決定複製的長度。三、用途不一樣。一般在複製字符串時用strcpy,而須要複製其餘類型數據時則通常用memcpy

相關文章
相關標籤/搜索