一般iostream头文件包含了string.h,但有的编译器中没有包含,所以字符串操作最好加上头文件string.h
1、char、char*、const char、const char*、char a[] =>string
s = "h";
直接赋值即可,可自动隐式转换。
char p = 'a';
std::string s;
const char q = 'b';
char* a="hahha";
char b[50];
const char* c ="hello";
s = p;
std::cout << p << std::endl;
s = q;
std::cout << s << std::endl;
s = a;
std::cout << s << std::endl;
s = c;
std::cout << s << std::endl;
strcpy(b, a);
s = b;
std::cout << s << std::endl;
2、string=>char*、const char*
s = "h";
char* a="hahha";
const char* c ="hello";
a = (char*)s.c_str();
std::cout << a << std::endl;
c = s.c_str();
std::cout << c << std::endl;
3、string=>char数组
char b[50];
s = "h";
strcpy(b,s.c_str());
std::cout << b << std::endl;
4、string=>char
std::string s;
char p = 'a';
s = "h";
std::stringstream ss;
ss << s;
ss >> p;
std::cout << p << std::endl;
//下面这种方法虽然程序不报错,但是转化后的结果是错的。
p = (char)s.c_str();
std::cout << "string 2 char"<<p << std::endl;
5、string => int、double、float、long
std::cout << "string => int、double、float"<< std::endl;
std::string str = "55";
int s2i;
float s2f;
long s2l;
double s2d;
s2i = std::stoi(str);
s2f = std::stof(str);
s2l = std::stol(str);
s2d = std::stod(str);
std::cout << s2i << std::endl;
std::cout << s2f << std::endl;
std::cout << s2l << std::endl;
std::cout << s2d << std::endl;