C 字串 函式

2021-10-05 07:37:33 字數 3214 閱讀 3570

1.c風格字串

2.c++引入的string型別

字串實際上就是使用null字元 \0終止的一維字元陣列

int main();

可以簡寫成:

char greeting2 = "hello"; // 最後會跟著乙個\0的空字元,此時如果括號中寫長度,必須大於等於6

}

c++標準庫提供了string型別,需要引入#include,由於string類宣告在命名空間std中,使用時要記得加上

#include#includeusing namespace std;

int main();

// 字串拼接

string name1 = "xiaohong";

cout << name + name1 << endl;

// 獲取指定位置字元

cout << name1[0] << endl;

cout << name1.at(2) << endl;

// 字串遍歷

for (char i:name1)

// 擷取字串

substr(開始位置,擷取長度)

cout << name1.substr(3,3) << endl;

// 獲取字元在字串中的索引

cout << name1.find("hong") << endl;

// 獲取字串長度

cout << name1.length() << endl;

cout << name1.size() << endl;

}

vector很大程度上和陣列一樣,只是陣列是固定長度,而vector是不定長度(動態增長)。

#includeusing namespace std

int main();

cout << num[4] << endl; // 不會檢查越界

cout << num.at(4) << endl; // 丟擲越界異常

// 增加

num.push_back(666);

// 修改

num.at(4) = 6;

num[0] = 6;

//查詢

for (int i = 0; i < num.size(); ++i)

for (int s:num)

}

#include #include using namespace std;

int main(),,};

for (int i = 0; i < scores.size(); ++i)

cout << endl;

}return 0 ;

}

函式的定義一般包含四個部分:方法名稱、方法引數、方法體、返回值

#includevoid sayhello()

int main()

無引數無返回值、無引數有返回值、有引數無返回值、有引數有返回值

把函式分成宣告和定義兩部分,函式的原型定義在呼叫的前面,具體實現可以放在後面。

#include using namespace std;

//函式宣告 ,也叫函式原型 並不知道這個函式具體是如何實現的。只是有一些基本架子而已。

int add (int a , int b);

int main()

//函式定義 ,函式的真正實現。

int add(int a , int b)

一般說來,函式的宣告 ( 函式原型 )通常都會放到標頭檔案中,之所以稱之為標頭檔案是因為它總是在main函式的前面就引入進來。標頭檔案一般以 .h 或者 .hpp 結尾,通常用於 寫類的宣告(包括類裡面的成員和方法的宣告)、函式原型、#define常數等,但一般來說不寫出具體的實現

為了能夠讓宣告和定義能夠快速的被關聯上,通常它們的名稱會被定義成一樣的,這已經成為了一種預設的規定

//函式宣告

int add (int a , int b);

#include "math.h"

//函式定義 ,函式的真正實現。

int add(int a , int b)

#include #include "math.h" //這裡使用"" 表示從當前目錄查詢

int main()

兩個或者兩個以上的函式名稱是一樣的,當然他們的 引數個數 或者 引數型別 或者是 引數的順序 是不一樣的。這種現象有乙個學名叫做 過載

值傳遞

#includeusing namespace std;

void scale_number(int num);

int main();

scale_number(number);

//列印number 1000

cout << number 100)

num = 100;

}

傳遞陣列

函式的引數除了能傳遞普通簡單的資料之外,陣列也是可以傳遞的。但是陣列稍微有點特殊,這裡多做講解。

前面提過,形參實際上就是實參的乙份拷貝,就是乙個區域性變數。

陣列的資料太大,如果都進行拷貝,那麼比較麻煩,也造成了浪費

所以實際上傳遞陣列的時候,並不會進行整個陣列的拷貝,而只是傳遞陣列的第乙個元素記憶體位址 (指標 ) 進來。

陣列的資料還是在記憶體中,只是把第乙個元素(也就是陣列的起始)記憶體位址傳進來而已。

這就造成了函式的內部根本無法知道這個陣列的元素有多少個。

傳遞引用

目前為止,我們所有函式的引數傳遞,都是對資料進行了乙份拷貝(陣列除外)。那麼在函式的內部是不能修改值的,因為這僅僅是乙份值得拷貝而已(函式外部的值並不會受到影響)。如果真的想在函式內部修改值,那麼除了陣列之外,還有一種方式就是傳遞引用。

引用實際上只是原有資料的一種別名稱呼而已,使用 & 定義

#includeusing namespace std;

void scale_number(int &num);

int main();

scale_number(number);

//列印number100

cout << number <100)

num = 100;

}

C 字串函式

c 字串函式 部分 方法 作用 compare 比較字串的內容,考慮文化背景 場所 確定某些字元是否相等 compareordinal 與compare 一樣,但不考慮文化背景 format 格式化包含各種值的字串和如何格式化每個值的說明符 indexof 定位字串中第一次出現某個給定子字串或字元的...

c 字串函式

2 strlen strcpy strcat strcmp strchr strcoll strstr strtok strtod strtol strcpy char strcpy char s1,const char s2 將字串 s2 複製到字串陣列 s1 中,返回 s1 的 值strcat ...

字串函式 C

c 中有大量的函式用來操作以 null 結尾的字串 strcpy s1,s2 複製字串 s2 到字串 s1。2strcat s1,s2 連線字串 s2 到字串 s1 的末尾。3strlen s1 返回字串 s1 的長度。4strcmp s1,s2 如果 s1 和 s2 是相同的,則返回 0 如果 s...