0. CPPGuide
https://zh.cppreference.com/w/cpp/string/basic_string/substr
1. reference:专治变量,类等
int * const r;
- 必须赋初始值
不可改变引用的指向
const int & r;(const int * const r)
#include <iostream>using namespace std;int main(){int a = 5;int b = 10;// int &r1; //[Error] 'r' declared as reference but not initializedint &r2 = a;// &r2 = b; //[Error] lvalue required as left operand of assignmentconst int &r3 = a;// r3 = b; //[Error] assignment of read-only reference 'r3'return 0;}
2. new
3. function
4. 类型说明符
- auto
- decltype(var or exp)
#include <iostream>#include <string>using namespace std;//返回在string对象中某个指定字符第一次出现的位置,同时返回该字符出现的总次数inline string::size_type find_char(const string& s, char c, string::size_type& occurs){auto ret = s.size();for(decltype(ret) i = 0; i< s.size(); i++){if(s[i]==c){if(ret == s.size())ret = i;occurs++;}}return ret;}int main(){string s = "hello world";string::size_type occurs = 0;cout << find_char(s, 'l', occurs) << endl;cout << occurs << endl;return 0;}
- const string& s
- 不能返回string::size_type&因为ret是函数内部创建的变量,执行完会被销毁,因此不能传ret的引用,即不能传临时变量的引用
- 增加occurs从而使函数返回更多的信息(值)
- 可设置inline
**
