字符串string相关
(1)string的定义
使用头文件#include <string>
定义方式,例如string str;
(2)string的初始化
可以直接赋值 string str = “hello”;
(3)string的长度
返回当前字符串长度的函数size()
和length()
(4)string元素的访问
-
通过元素下标进行访问,从0到size()-1
-
通过迭代器进行访问
for(string::iterator it = str.begin() ; it!=str.end();++it)
printf("%c ",*it);
(5)string中的元素操作
- insert()函数
str.insert(pos, string); // pos为插入的位置,string是插入的字符串
- erase()函数
str.erase(begin, end); //删除str[begin]~str[end]的字符串
str.erase(num);
- clear()函数
str.clear(); //将字符串清空
(6) string的运算符
可以使用“+”和“+=”连接字符串,也可以使用比较运算符按照字典序进行大小比较。
(7)string的常用函数
- find():在字符串中寻找特定字符或字符串
若函数找到相应的字符(串),则返回对应的下标;若找不到返回string::npos。 - substr():返回字符串的子串
substr(begin, length);
(8)字符串加法/乘法/除法
string Add(string str, int x){
int carry = x;
//乘法改为int carry = 0;
for(int i=str.size()-1; i>=0; --i){
int current = (str[i]-'0') + carry;
//乘法改为int current = x*(str[i]-'0') + carry;
str[i] = current % 10 + '0';
carry = current / 10;
}
if(carry != 0) //最高位有进位
str = "1" + str;
return str;
}
string Divide(string str, int x){
int remainder = 0; //余数
for(int i=0; i<str.size(); ++i){
int current = remainder*10 + str[i] - '0';
str[i] = current / x + '0';
remainder = current % x;
}
//删除多余前置0
int pos = 0;
while(str[pos] == '0')
pos++;
return str.substr(pos);
}