常用的函数
push_back(char c) 在string 结尾放置字符
pop_back() 删除字符串的最后一个字符,将其长度减少1
/string 中使用 push_back ()效率很低,尽量使用+=/
substr (pos,n) pos 表示要截取的字符串的起始位置,n表示要截取的字符串长度
substr(pos) 表示从pos位置开始一直截取到字符串最后一位
toupper(c)转化为大写
tolower(c)转化为小写
assign() 赋值常用方法:
-
直接用另一个字符串赋值 例:str2.assign(str1);
-
用另一个字符串的一个子串赋值 (字符串,起始位置,长度) ,例:str3.assign(str1,2,3);
-
用一个字符串的前一段子串赋值 (字符串,长度) ,例:str4.assign(“world”,5);
-
用几个相同的字符串赋值 (num,char) num个char ,例:str5.assign(10,‘c’);
find函数
- size_t find (constchar* s, size_t pos = 0) const; 在当前字符串的pos索引位置开始,查找子串s,返回找到的位置索引, -1表示查找不到子串
- size_t find (charc, size_t pos = 0) const; 在当前字符串的pos索引位置开始,查找字符c,返回找到的位置索引, -1表示查找不到字符
- size_t rfind (constchar* s, size_t pos = npos) const; 在当前字符串的pos索引位置开始,反向查找子串s,返回找到的位置索引, -1表示查找不到子串
- size_t rfind (charc, size_t pos = npos) const; 在当前字符串的pos索引位置开始,反向查找字符c,返回找到的位置索引,-1表示查找不到字符
- 如果find找不到char或string则返回 该string.npos
cctype中可用函数
-
isdigit ( c ) 如果c是数字,返回true
-
isalpha( c ) 如果c是字母,返回true : 不区分大小写,大小写都算
-
isalnum( c ) 如果c是字母或数字,返回true
-
isupper() 如果c是大写字母,返回true
-
islower() 如果c是小写字母,返回true
-
iscntrl ( c) c是控制符,返回true
将int转化为string
-
包含头文件 #include < string>
std::to_string(int)
std::to_string(long)
std::to_string(long long)
std::to_string(float)
std::to_string(double)
std::to_string(long double)
-
数字转字符串:使用sprintf()函数
char str[10];
int a=123456;
sprintf(str,"%d",a);//转为int
\--------------------
char str[10];
double a=123456;
sprintf(str,"%.3lf",a);//转为三位小数的double
\--------------------
char str[10];
int a=123456;
sprintf(str,"%x",a);//转为16进制
将string转化成其他类型
stoi 将string转化为int
stol string转为long
stoll string转为long long
-
使用sscanf()函数
char str[]="123456"; int a; sscanf(str,"%d",&a); ............. char str[]="123.456"; double a; sscanf(str,"%lf",&a); ............. char str[]="BD"; int a; sscanf(str,"%x",&a); //16进制转换成10进制
传入
如果输入“hello world!” 使用的是 cin>>str,则 str=“hello”
如果使用的是getline(cin,str) ,则str=“hello world!"
">>"遇到空格停止,开始返回string对象,“getline”遇到enter停止,开始返回string对象。
使用以上性质可以完成:
-给一行字符串按空格分割放入vector中
#include <sstream>
stirng str = "hello world!"; // 预先给出的字符串
isstringstream is (str); // 新建一个输入流赋值为str
string temp; // 新建string临时变量用来存放分段字符
vector <string> vec;
while (is >> temp) // 因为cin>> 只能从标准输入中读取单个词,遇到空格就停止了
{
vector.push_back(temp);
}
如果想利用某一特定字符串分割str则可以写
string str ="hello ,a , b";
isstringstream is(str);
vector <string> res;
string temp;
while (getline(is ,temp,',')){
res.push_back(temp);
}