(1)string追加问题
string res;
res+=s[i];
//res[i]=s[i]; res没有开辟空间只能用追加+= 不可用赋值
//res+=s;既能追加string字符串 也能是char字符
//res.append(s[i]);只能追加string字符串 不能是char字符
//res.push_back(s[i]));只能追加char字符 不能是string字符串
(2)string 大小写转化问题
1.ASCII码小写比大写字母大32 upperCase=littleCase-32; upperCase littleCase都是char型字符
2.tolower() / toupper()
所在头文件<ctype.h>
str[i] = tolower(str[i])
3.transform(res.begin() , res.end() ,des.begin() , ::tolower);
transform(res.begin() , res.end() ,des.begin() , ::toupper);
所在头文件 <algorithm>
res 、des都是string类型字符串(任可包含任意字符 如空格 非字母等字符)
注意:在使用transform函数之前要先对目标string的size使用resize()函数重置des.resize(res.size());
(3)isalnum(c)
判断所传字符c是否是字母或者数字 若是返回一个非0 值 否则返回0;
所在头文件<ctype.h>
sub=s.substr(int first,int end)//截取子串 /区分java .Substring()
s.compare(s1)//string 比较
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string A ("aBcdef");
string B ("AbcdEf");
string C ("123456");
string D ("123dfg");
//下面是各种比较方法
int m=A.compare (B); //完整的A和B的比较
int n=A.compare(1,5,B,4,2); //"Bcdef"和"AbcdEf"比较 从...开始长度为...的子串比较
int p=A.compare(1,5,B,4,2); //"Bcdef"和"Ef"比较
int q=C.compare(0,3,D,0,3); //"123"和"123"比较
cout << "m = " << m << ", n = " << n <<", p = " << p << ", q = " << q << endl;
cin.get();
return 0;
}
(4)reverse(s.begin(),s.end())
逆置一个string字符串s
所在头文件<algorithm>
(5)find() /index()
int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串时候首次出现的位置
int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中首次出现的位置
int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中首次出现的位置
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中首次出现的位置
post可以不指定默认从头开始 可用于判断两个字符串是否通同构
(6) string与数据的转换
1、利用stringstream类(可以转成任意类型不只是整型)
.字符串到整数
stringstream sstr(str);
int x;
sstr >> x;
整数到字符串
stringstream sstr;
int x;
sstr << x;
string str = sstr.str();
2、标准库方法
需要用到的头文件: #include <stdlib.h>
#include<string.h>
c++11提供了to_string方法,可以方便的将各种数值类型转换为 字符串类型:
std::string to_string(int value);
std::string to_string(long int value);
std::string to_string(long long int value);
std::string to_string(unsigned int value);
std::string to_string(unsigned long long int value);
std::string to_string(float value);
std::string to_string(double value);
还提供了stoxxx方法,将string转换为各种类型的数据:
std::string str = "1000";
int val = std::stoi(str);
long val = std::stol(str);
float val = std::stof(str);
c++11还提供了字符串(char*)转换为整数和浮点类型的方法:
atoi: 将字符串转换为int
atol: 将字符串转换为long
atoll:将字符串转换为long long
atof: 将字符串转换为浮点数