string 是一個保存 char 的序列容器,把字串的記憶體管理責任交由 string 負責而不是 programmer,減輕了 C 語言風格字串的麻煩,
使用前需要預先載入 #include 即可。
###定義一個String
string str1("catapillar");
string str2 = "catapillar";
auto str3 = "catapillar"s;
auto str4("catapillar"s);
auto const_str1("catapillar"sv);
auto const_str2 = "catapillar"sv;
sv
是constant string 的意思,不會變的string,活用這個有助加快運行速度String birthday = "Happy" + " " + "Birthday";
//輸出 Happy Birthday
String add1Element = "Hell"s + 'o';
//輸出Hello
存取一個字節
char alphabet = birthday[2];
string animal = "catapillar";
animal.size();
//翻譯:獲得animal的長度
string animal = "catapillar";
animal.insert(5,"****");
//翻譯:從第五個位置(其實是第六個字節啦)插入“****“
string reptile = "catapillar";
string mammal = "whale";
reptile.append(mammal,0,5);
//翻譯:從mammal中選取5個字節,在0位置(剛開始)插入到reptile中
auto greet = "Hello Buddy"sv;
auto subString = greet.substr(0,5);
//從第0個位置摘取5個字元,就是 "Hello"
sv
是constant string 的意思,不會變的string,活用這個有助加快運行速度auto greet = "Hello Buddy"sv;
auto index = greet.find_first_of("B");
cout << index << endl;
//輸出6
string nums = "345.3423";
auto integer = std::stoi(nums);
//翻譯:從string 轉換成integer(整數), 輸出為345
auto doubles = std::stod(nums);
//翻譯:從string 轉換成double(也就是小數), 輸出為345
int number = 123432;
auto nums = std::to_string(number);
//翻譯:從integer 轉換成string, 輸出為"123432
尋找
string animal = "catapillar";
animal.find("pill",0);
//翻譯:從第0個位置(就是剛開始)尋找第一個pill
功能 | Vector | String |
---|---|---|
空宣告 | vector<資料類型> vec; |
String a; |
宣告 | vector<資料類型> vec= {1,23,44}; |
auto greet = "Hello"s; |
複製 | vector1 = vector2 |
string1 = string2; |
Slice | slice = vector<int>(v1.begin(),v1.begin()+5) |
Slice = s1.substr(0,5); |
調轉 | reverse(v1.begin(),v1.end()); |
reverse(str.begin(),str.end()); |
總和 | reduce(execution::par,vector.begin(),vector.end()); |
不適用 |
呼叫變量/字元 | auto i = v1[4]; |
auto c = str[4] |
大概就是這樣了,有缺漏可以在留言區講啊·。
還記得在第五天我講過一個像這樣子的loop嗎
for(auto& i:vector){
cout << i <<endl;
}
這個Loop不僅僅可以輸出Vector內的變數,也可以對每個變數進行判斷,和更改,在string裏也可以這樣做,例如我想以,
為基準split開一個string
vector<string> vec_str;
auto str = "Hello,Comma,time,";
auto slice = "";
//當發現comma時,把前面的slice放進vector中並清空
for(auto& c: str){
if(c==',') {
vec_str.emplace_back(slice);
slice.clear();
} else slice+=c;
}
//Print出所有Vector元素
for(auto& str:vec_str){
cout<<vec_str<<endl;
}
//輸出
//Hello
//Comma
//time