1、string与char *
比如,string的append函数只能加const char类型的,而push_back函数可以加char类型的,也可以直接用 += 来添加char类型的,如果要同时添加两个char, 比如 char a, char b, 则不能写为 str += a + b, 只能老老实实写成 str = str + a + b;
- char* to string
char *cStr = "C++";
std::string Str = std::string(cStr);(可以不加string)
- string to char*
std::string str = "string";
const char *cstr = str.c_str();
由于cstr是const的,不能被修改,如果想要修改的话,可以另拷贝一份再修改:
std::string str = "string";
char *cstr = new char[str.length() + 1];
strcpy(cstr, str.c_str());
// do something here!
delete [] cstr;
2、string 和 int
// string to int
std::string s = "28";
int d = atoi(s.c_str());
// int to string
int d = 123;
// method 1
char *intStr = itoa(d);
std::string s = string(intStr);
// method 2
stringstream ss;
ss << d;
std::string s = ss.str();
// method 3
std::string s = std::to_string(d);
3、确定字符是否是同一字母(不区分大小写)
有一个公式可以直接记住:
if((s[left] -'a'+ 32 )%32 == (s[right] -'a'+ 32)%32)是判断是否相等的,
//如果是‘A’或者‘a’的话,它们减去‘a’得到的数分别是:-32和0,再加上32的话正好是0和32,除以32——余数都为0
//如果是‘B’或者‘b’的话,它们减去‘a’得到的数分别是:-31和1,再加上32的话正好是1和33,除以32——余数都为1