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