char* 这种类型内存都要预先设置的 在内存合适的基础上进行
string
slice、substring、substr、concat这几个不会破坏原始字符串
查找
find():在一个字符串中查找一个指定的单个字符或字符数组。如果找到,就返回首次匹配的开始位置;如果没有查找到匹配的内容,就返回string::npos。
find_first_of():在一个目标串中进行查找,返回值是第一个与指定字符组中任何字符匹配的字符位置。如果没有查找到匹配的内容,则返回npos。
find_last_of():在一个目标串中进行查找,返回最后一个与指定字符组中任何字符匹配的字符位置。如果没有查找到匹配的内容,则返回npos。
find_first_not_of():在一个目标串中进行查找,返回第一个与指定字符组中任何字符都不匹配的元素位置。如果找不到那样的元素则返回npos。
find_last_not_of():在一个目标串中进行查找,返回下标值最大的与指定字符组中任何字符都不匹配的元素的位置。若找不到那样的元素则返回npos。
rfind():对一个串从尾至头查找一个指定的单个字符或字符组。如果找到,就返回首次匹配的开始位置;如果没有查找到匹配的内容,则返回npos。
find(string, int):第一个参数用来指示要查找的字符,第二个参数用来表示从字符串的何处开始查找子串(默认的查找位置是0)。
截取 截取用下面两个就够了
s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回
s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回
长度 (有中文的话根据编码中文占的字节不一样 这个不好用)
1.str.length()
2.str.size()
3.转换成char* 后用strlen
char* char[]
列一些函数
strcat_s
用习惯了其它类似的安全字符串函数,总想当然的以为第二个参数也表示目的buffer的可用空间大小。其实它指的是目的缓存整个空间的大小!如果把这个意思理解反了,很容易导致程序“莫名其妙”的崩溃。因为该函数首先是检查你当前缓存中的字符串长度,如果该长度都已经大于第二个参数所“标识”的长度,则立马抛出异常并结束程序;
自己测了一下 第一个参数必须要申请空间 不能直接 char*a="asda";