Char型和string型字符串比較整理


1.賦值

char賦值:

  char ch1[] = "give me";

  char ch2[] = "a cup";

  strcpy(ch1,ch2);

  cout<<"ch1="<<ch1<<endl;

輸出結果:ch1=a cup

string賦值:

  string str1 = "give me";

  string str2 = "a cup";

  ①str1 = str2;

     cout<<"str1="<<str1<<endl;

  ②str1.assign(str2,0,5);       // 參數2為起始位置,參數3為字符數

     cout<<"str1="<<str1<<endl;

輸出結果:str1=a cup

     str1=a cup

 

2.合並(全部)

char合並(全部):

  char ch1[15] = "give me "; // 注意長度,合並后為13

  char ch2[] = "a cup";

  strcat(ch1,ch2);

  cout<<"ch1="<<ch1<<endl;

輸出結果:ch1=give me a cup

string合並(全部)

  string str1 = "give me ";

  string str2 = "a cup";

  str1 = str1 + str2;

  cout<<"str1="<<str1<<endl;

輸出結果:str1=give me a cup

 

3.合並(部分)

char合並(部分):

  char ch1[10] = "ab";  // 注意合並后的長度

  char ch2[] = "abc";

  strncat(ch1,ch2,3);    // 參數3為從起始位置起的字符數

  cout<<"ch1="<<ch1<<endl;

輸出結果:ch1=ababc

string合並(部分):

  string str1 = "ab";

  string str2 = "cdefg";

  str1.append(str2,2,3); // 參數2為數組下標,參數3為參數2后字符數。即將str2從下標為2位置起3個字符合並到str1

  cout<<"str1="<<str1<<endl;

輸出結果:str1=abefg  

 

4.測長

char測長:

  char ch1[] = "give me";

  int m = strlen(ch1);  //不包括‘\0’

  cout<<"m="<<m<<endl;

輸出結果:m=7

string測長:

  string str1 = "give me";

  ①int m = strlen(str1.c_str());

     cout<<"m="<<m<<endl;

  ②int n = str1.size();

     cout<<"n="<<n<<endl;

  ③int k = str1.length();

     cout<<"k="<<k<<endl;

輸出結果:m=7

       n=7

           k=7

 

5.替換

char替換:

  char ch1[10] = "ab";

  char ch2[] = "cdefg";

  strncpy(ch1,ch2,3);       // 拷貝ch2起始位置后3個字符賦給ch1

  cout<<"ch1="<<ch1<<endl;

輸出結果:ch1=cde

string替換:

  string str1 = "ab";

  string str2 = "cdefgh";

  str1.replace(0,1,str2,4,2);  // 將str2從下標4開始2個字符替換掉str1中從起始位置開始1個字符

                // replace函數可重載,有多種形式,也支持Char型字符替換

  cout<<"str1="<<str1<<endl;

輸出結果:str1=ghb

 

6.拷貝

char拷貝:

  char ch1[10] = "abc";

  char ch2[] = "de";

  memmove(ch1,ch2,2); //將ch2從起始位置起兩個字符賦給ch1

  cout<<"ch1="<<ch1<<endl;

輸出結果:ch1=dec

string拷貝:

  string str1 = "abc";

  char ch2[10] = "defg";

  str1.copy(ch2,10,1);    // copy函數的第一個參數只能為char類型

               // 將str1從下標1位置開始的10個字符賦給ch2

  cout<<"ch2="<<ch2<<endl;

輸出結果:ch2=bcfg

 

7.插入

  string str1 = "1278";

  string str2 = "3456";

  str1.insert(2,str2,0,4);   // 在str1下標為2的位置插入str2起始位置后4個字符

  cout<<"str1="<<str1<<endl;

輸出結果:str1=12345678

 

8.刪除

  string str("give me");

  str.erase(2,2); // 刪除從下標為2位置起兩個字符

  cout<<"str="<<str<<endl;

  str.erase(2);  // 刪除下標為2位置后全部字符

  cout<<"str="<<str<<endl;

  str.erase();    // 刪除所有字符

  cout<<"str="<<str<<endl;

輸出結果:str=gi me

     str=gi

     str=

 

9.查找

  string str("Hello worldw");

  int m = str.find('w',0);   // 從str起始位置開始查找w字符

  cout<<"m="<<m<<endl;

  int n = str.find_first_not_of('w',0);  // 查找str起始位置開始不是w的字符

  cout<<"n="<<n<<endl;

  int k = str.find_first_of('w',0);  // 從str起始位置開始查找第一個w字符

  cout<<"k="<<k<<endl;

  int l = str.find_last_of('w');   // 查找最后一個w的位置

  cout<<"l="<<l<<endl;

  int p = str.find_last_not_of('w');  // 查找最后一個不是w的字符的位置

  cout<<"p="<<p<<endl;

  int q = str.rfind('w'); // 反向查找

  cout<<"q="<<q<<endl;

輸出結果:m=6

     n=0

     k=6

     l=11

     p=10

     q=11

 

10.比較

  string str1 = "155";

  string str2 = "52";

  char c[] = "34";

  int i = str1.compare(str2);

  cout<<"i="<<i<<endl;  // 輸出i=-1

  int j = str2.compare(c); // string字符串可以與char字符比較

  cout<<"j="<<j<<endl; // 輸出j=1

  int l = str1.compare(0,2,str2); // 比較前兩個字符

  cout<<"l="<<l<<endl; // 輸出l=-1;

  int k = str1.compare(1,1,str2,0,1); // str1下標為1位置字符與str2下標為0位置字符比較

  cout<<"k="<<k<<endl; // 輸出k=0

  int m = str1.compare(1,1,c,0,1);

  cout<<"m="<<m<<endl;// 輸出m=1

  int n = str1.compare(1,1,c,1);

  cout<<"n="<<n<<endl; // 輸出n=1

 

11.判空

  string str = "";

  if(str.empty())

 

12.轉換(string轉字符數組)

  string str1 = "Hello World";

  const char* ch1;

  ch1 = str1.c_str();

 

13.交換

char交換:

  char ch1[15] = "ofru";

  char ch2[15] = "";

  swab(ch1,ch2,strlen(ch1));  // 將ch1奇偶對調后傳入ch2

  cout<<"ch2="<<ch2<<endl;

輸出結果:ch2=four

string交換:

  string str1 = "four";

  string str2 = "";

  str1.swap(str2);

  cout<<"str2="<<str2<<endl;

輸出結果:str2=four

  

以上,整理自《范磊C++視頻》筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM