题目及答案链接
https://www.liuchuo.net/archives/1888
c++ 有关 字符串 和各种类型的转换
#include <string>
string a;
a=to_string(b); //b可以是 任何基础 【数值】 类型 不包括 char
#include <cstdlib>
valT=atox(b) //x可以换成 i l f,b必须是char * 类型;因为这个函数是从c来的。b必须是符合转换的字符串
//atox 是ascii to x 的意思,atoi 字符串转整形,atol 串转长整,atof 串转double
valT=strtox(char*a,char**endptr,base) //x可以是l ul d ,算是atox的改良版,strtol 串转long int ,strtoul 串转无符long , strtod 串转double
//第一个参数和atox(b)的b类似,是字符串,不要求串全部都是要转换的内容(没有符合子串返回0)
//第二个参数是可以为NULL,或者char*变量的【地址】,注意是char*变量的地址,不是char*,null则函数无视null,否则*endptr指向
不合条件而终止的字符串中的字符指针,例如串为“abc123def”;则函数运行完endptr指向‘d’的位置(已经展示了相对于atox的优点)
例:char* a,*b; strtol(a,&b,10);
//第三个参数是base,表示用什么进制解释 串中的数字,输出还是十进制,若base为0则自动匹配,一般都是10
string ,char*,char[],const char* 之间的转化
string 转 char*.
//string st;
char* c=(char*)st.date();
const char* b=st.date();
const char* b=st.c_str()
string 转char[]
//char b[x];string st;
st.copy(b,个数n,起始下标);
b[n]='\0';【注意,复制完后,b只是字符数组,要手动在最后添加‘\0’使其成为字符串】
或者手动for循环挨个赋值
char * char[]转string
直接赋值即可