本节将对C++中字符串的操作进行整理。
字符串长度
int len = str.length(); len = str.size()
字符串比较
可以直接进行比较
也可以:
str1.compare(str2); str1.compare(pos1,len1,str2,pos2,len2);//值为负,0和正
附加
str1 += str2; str1.append(str2); str1.append(str2,pos2,len2);
字符串提取
str2 = str1.substr(); str2 = str1.substr(pos1); str2 = str1.substr(pos1,len1); string a = s.substr(0,4);//获得字符串s中,从第0位开始的长度为4的字符串
字符串搜索
where = str1.find(str2); where = str1.find(str2.pos1); //pos1是从str1第pos1位开始搜索 where = str1.rfind(str2);
插入字符串
str1.insert(pos1,str2); str1.insert(pos1,str2,pos2,len2); str1.insert(pos1,numchar,char); //numchar是插入次数,char是要插入的字符
替换字符串
str1.replace(pos1,str2); str1.replace(pos1,str2,pos2,len2);
删除字符串
str.erase(pos,len); str.clear();
交换字符串
swap(str1,str2);
字符串转换成数字
推荐使用C++的stringstream,因为其操作简单。
#include<sstream> #include<string> int str2num(string s) { int num; stringstream ss(s); ss>>num; return num; }
数字转换成字符串
#include<sstream> #include<string> string num2str(int num) { stringstream ss; ss<<i; return ss.str(); }
字符串分隔
使用substr和find函数可以完成这一操作。
vector<string> splitwithstl(const string &str, const string &pattern) { vector<string> resVec; if("" == str) { return resVec; } //方便截取最后一段数据 string strs = str + pattern; size_t pos = strs.find(pattern); //返回第一个出现pattern的位置 size_t size = strs.size(); while(pos != string::npos) { string x = strs.substr(0,pos); //获得第0到第pos位置的字符串 resVec.push_back(x); strs = strs.substr(pos+1,size); pos = strs.find(pattern); } return resVec; }