C++中一些常見函數總結

1.strcmp函數

一般形式:strcmp(字符串1,字符串2)
功能:比較兩個字符串的大小
比較方式:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較)直到遇到不同的字符或遇‘\0’爲止。
(1)字符串1=字符串2 返回0
(2)字符串1>字符串2 返回一個正整數(不是1)
(3)字符串1<字符串2 返回一個負整數(不是-1)
特別注意:strcmp(char * s1, char * s2) 這裏面只能比較字符串,不能比較數字等其他形式的參數。
示例:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    char *name[]={"follow me","basic","great wall","forran","computer"};
    int i,j,k;
    int n=5;
    char *temp;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(strcmp(name[j],name[k])<0)  k=j;
            if(k!=i) 
            {
                temp=name[i];
                name[i]=name[k];
                name[k]=temp;
            }
    }
    for(i=0;i<n;i++)
        cout<<name[i]<<endl;
    return 0;
}

運行結果:

basic
computer
follow me
forran
great wall

2.strcat函數

strcat()接受兩個字符串參數,將第二個字符串的一份拷貝添加到第一個字符串的結尾,(覆蓋第一個字符串結尾處的‘\0’)從而使第一個字符串成爲一個新的組合字符串,第二格字符串不改變。

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	 char a[100] = "hello"; 
	const char* b = "world";
	strcat(a, b);
		cout << a;
	return 0;
}

運行結果:

helloworld

這就是strcat(a,b),將b的字符串,接到了a上,a組合成了一個新的字符串,這也就需要a有足夠的空間去容納後面的字符串,所以a會是一個數組。
(這裏覺得寫得有些不太對,如有錯誤,歡迎指正,感謝!)

3.strlen函數

功能:檢測字符串實際長度,從代表該字符串的第一個地址開始遍歷,直到遇到結束符’\0’停止。返回的長度大小不包括‘\0’。
格式:strlen(字符指針表達式)即strlen(char*)
但我相信應該還有一些人會和我一樣總是分不清它和sizeof吧!
其實sizeof是一個運算符,它不是一個函數!

sizeof運算符

計算所佔的字節大小
功能:獲得保證能容納實現所建立的最大對象的字節大小
它的參數可以是數組、指針、類型、對象、函數等
具體而言,當參數分別如下時,sizeof返回的值表示的含義如下:

數組——編譯時分配的數組空間大小;
指針——存儲該指針所用的空間大小(在32位機器上是4,64位機器上是8);
類型——該類型所佔的空間大小;
對象——對象的實際佔用空間大小;
函數——函數的返回類型所佔的空間大小。函數的返回類型不能是void。

(此處借鑑了其他博主文章
原文鏈接:https://blog.csdn.net/ly_6699/article/details/89482591)
這裏給出一個例子,對二者進行比較

#include<iostream>
#include<cstring>
using   namespace   std;
   int main()
{
	char p[] = "hello";
	cout << "p: " << p << "   " << strlen(p) << "   " << sizeof(p) << endl;
	char p1[] = "hello\0";
	cout << "p1: " << p1 << "   " << strlen(p1) << "   " << sizeof(p1) << endl;
	char p2[] = "hello\\0";
	cout << "p2: " << p2 << "   " << strlen(p2) << "   " << sizeof(p2) << endl;
	char p3[] = "hello\\\0";
	cout << "p3: " << p3 << "   " << strlen(p3) << "   " << sizeof(p3) << endl;
	char p4[] = "hel\0lo";
	cout << "p4: " << p4 << "   " << strlen(p4) << "   " << sizeof(p4) << endl;
	char p5[] = "hel\\0lo";
	cout << "p5: " << p4 << "   " << strlen(p5) << "   " << sizeof(p5) << endl;
	return 0;
}

運行結果:

p: hello   5   6
p1: hello   5   7
p2: hello\0   7   8
p3: hello\   6   8
p4: hel   3   7
p5: hel   7   8

想要理解這個例子,還要了解轉義序列。
反斜線:\ (即會打印出一個反斜線\)

p2: hello\0   7   8

這裏的\是由\轉義來的,轉義後的\也就不能和後面的0結合了,就是兩個普通的\和0

p3: hello\   6   8

這裏也是\轉義爲一個\後,遇到了\0,所以會停止

p4: hel   3   7

這個大家應該可以理解吧,就是遇到了中間的\0,就終止了

p5: hel   7   8

這個的解釋就暫時先空着吧,我也沒搞懂呢,對不起大家啦,等我搞懂了會在回來寫的/愛你們哦
對於這個一定記住:strlen 計算的是字符串的實際長度,遇到\0即停止;sizeof 計算整個字符串所佔內存字節數的大小,遇到\0也要+1計算;
以上是自己的一些總結,如有錯誤歡迎指正!
感激!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章