The difference between string and char arrays

In general, string is more time-consuming than char[], such as append() functions, and char[] can basically implement the operations that string can complete.

1. Assignment

char assignment:

 char ch1[] = "give me";
  char ch2[] = "a cup";
  strcpy(ch1,ch2);
  cout<<"ch1="<<ch1<<endl;

Output result: ch1=a cup

string assignment:

 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;

Output result: str1=a cup
     str1=a cup

2. Merge (all)

char merge (all):
  

char ch1[15] = "give me "; // 注意长度,合并后为13
  char ch2[] = "a cup";
  strcat(ch1,ch2);
  cout<<"ch1="<<ch1<<endl;

Output: ch1=give me a cup

string merge (all)

string str1 = "give me ";
  string str2 = "a cup";
  str1 = str1 + str2;
  cout<<"str1="<<str1<<endl;

Output result: str1=give me a cup

3. Merge (Partial)

char merge (partial):

  char ch1[10] = "ab";  // 注意合并后的长度
  char ch2[] = "abc";
  strncat(ch1,ch2,3);    // 参数3为从起始位置起的字符数
  cout<<"ch1="<<ch1<<endl;
  

Output result: ch1=ababc

string merging (partial):

  string str1 = "ab";
  string str2 = "cdefg";
  str1.append(str2,2,3); // 参数2为数组下标,参数3为参数2后字符数。即将str2从下标为2位置起3个字符合并到str1
  cout<<"str1="<<str1<<endl;
  

Output result: str1=abefg  

4. Length measurement

char length measurement:

 char ch1[] = "give me";
  int m = strlen(ch1);  //不包括‘\0’
  cout<<"m="<<m<<endl;
 

 
Output result: m=7

String length measurement:

  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;
     

Output result: m=7
     n=7
   k=7

5. Replace

char replacement:

char ch1[10] = "ab";
  char ch2[] = "cdefg";
  strncpy(ch1,ch2,3);       // 拷贝ch2起始位置后3个字符赋给ch1
  cout<<"ch1="<<ch1<<endl;
  

Output result: ch1=cde

string replacement:

 string str1 = "ab";
  string str2 = "cdefgh";
  str1.replace(0,1,str2,4,2);  // 将str2从下标4开始2个字符替换掉str1中从起始位置开始1个字符
                // replace函数可重载,有多种形式,也支持Char型字符替换
  cout<<"str1="<<str1<<endl;
  

Output result: str1=ghb

6. Copy

char copy:

char ch1[10] = "abc";
  char ch2[] = "de";
  memmove(ch1,ch2,2); //将ch2从起始位置起两个字符赋给ch1
  cout<<"ch1="<<ch1<<endl;
  

Output result: ch1=dec

string copy:

string str1 = "abc";
  char ch2[10] = "defg";
  str1.copy(ch2,10,1);    // copy函数的第一个参数只能为char类型
               // 将str1从下标1位置开始的10个字符赋给ch2
  cout<<"ch2="<<ch2<<endl;
  

Output result: ch2=bcfg

7. Insert

string str1 = "1278";
  string str2 = "3456";
  str1.insert(2,str2,0,4);   // 在str1下标为2的位置插入str2起始位置后4个字符
  cout<<"str1="<<str1<<endl;
  

Output result: str1=12345678

8. Delete

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;
  

Output result: str=gi me
     str=gi
     str=

9. Find

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;
  

Output result: m=6
     n=0
     k=6
     l=11
     p=10
     q=11

10. Compare

string str1 = "155";
  string str2 = "52";
  char c[] = "34";
  char c2[]= "56";
  int z = strncat(c,c1);//用来比较两个char数组是否相等

   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. Empty

string str = "";
  if(str.empty())

12. Conversion (string to character array)

string str1 = "Hello World";
  const char* ch1;
  ch1 = str1.c_str();

13. Swap

char swap:

char ch1[15] = "ofru";
  char ch2[15] = "";
  swab(ch1,ch2,strlen(ch1));  // 将ch1奇偶对调后传入ch2
  cout<<"ch2="<<ch2<<endl;

Output result: ch2=four

String exchange:

  string str1 = "four";
  string str2 = "";
  str1.swap(str2);
  cout<<"str2="<<str2<<endl;

Output result: str2=four
  
or more, organized from the notes of "Fan Lei C++ Video"

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325676376&siteId=291194637