const char*、 string、char* 、 int 、double 之间的类型转换
1. const char*(C风格字符串)与 string 之间转换:
(1) const char* 可以直接对string类型赋值,例如:
const char* pchar = "abcdefg";
stringstr = pchar;
(2) string通过 c_str() 函数转换为C风格字符串,例如:
string str = "abcdefg";
const char* pchar = str.c_str();
2. const char*(C风格字符串)、string 与 int 、double之间转换:
(1) const char* 可以直接通过 atoi()、 atof() 直接转换为int 、double,例如:
const char* pcahr = "2.23";
int iValue = atoi(pcahr);
double dbValue = atof(pcahr);
(2)string通过 c_str() 函数转换为const char* ,然后再通过 atoi()、 atof() 直接转换为int 、double例如:
string str = "1.23";
iValue = atoi(str.c_str());
dbValue = atof(str.c_str());
(3)int 、double 转化为string , 通过 to_string() stringstream 例如:
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
double d = 3.1415926535897932384;
int ii = 108;
string str = to_string(d);
cout << str << endl; // 3.141593
str = to_string(ii);
cout << str << endl; // 108
stringstream ss;
ss << setprecision(15) << d;
str = ss.str();
cout << str << endl; //3.14159265358979
3. const char*(C风格字符串)与 char* 之间转换:
(1) const char*是不能直接赋值到char*的,char* 要开辟新的空间;
const char* pchar = "abcdefg";
int len = strlen(pchar); // 计算字符串长度
char* pc = new char[len + 1]; // 分配存储空间
strcpy_s(pc, len + 1, pchar);
(2) char* 到 const char* 直接赋值就可以了;
const char* pchar;
char pc[] = "abcdefg";
int len_pc= sizeof(pc) / sizeof(char);
pchar = pc;
int len_pchar = strlen(pchar);
备注: char pc[] 的长度为字符长度再加上 字符串结束符 ′\0′;
const char* 的长度则会比 char pc[] 小1,没有包含 字符串结束符 ′\0′。