最近准备Google面试,写图形学项目发现自己c++菜的一逼…于是准备记录一些c++的学习笔记orz
const char* vs. std::string
定义
- string 是c++的class,变量内存空间存放字符序列
- const char* 只是一个指向存放字符序列的内存区域的指针,变量内存空间只存放指针
拷贝
明显可以看出拷贝const char*只需要拷贝指针, 而拷贝string需要复制整个内存区域
互相转换
- const char* 可以被隐式转换为 string
- 从指针指向的地方开始复制字符
- string需要使用c_str() 来转换为const char*,同时这意味着失去string中方便的函数
常用操作
迭代器 iterator
1 | std::string s = ""; |
子串 slice
1 | std::string sub = s.substr(0,2); |
长度 length
1 | std::string s = "ABB"; |
求string类型下标为i的字符
1 | s[i] |
查找t是否为s的子串
1 | s.find(t); |
返回值: 子串的起始下标或者string::npos
npos是啥
static const size_t npos = -1
而size_t是unsigned,这说明npos是size_t类型变量的最大值
1 | std::cout << (std::string::npos == -1) ; // 1 |