数据类型的转换 Int 转 string1、//char *itoa( int value, char *string,int radix); // 原型说明: // value:欲转换的数据。 // string:目标字符串的地址。 // radix:转换后的进制数,可以是10进制、16进制等。 // 返回指向string这个字符串的指针int aa = 30;char c1[8];char c2[8];char c3[8];string str1;string str2;string str3;_itoa(aa, c1, 8);_itoa(aa, c2, 10);_itoa(aa, c3, 16);str1 = c1;str2 = c2;str3 = c3;cout << "输出八进制:" << str1 << endl;//输出36cout << "输出十进制:" << str2 << endl;//输出30cout << "输出十六进制:" << str3 << endl;//输出le 2、// int sprintf( char *buffer, const char *format, [ argument] … );//参数列表// buffer:char型指针,指向将要写入的字符串的缓冲区。// format:格式化字符串。// [argument]...:可选参数,可以是任何类型的数据。// 返回值:字符串长度(strlen) int aa = 30;char c1[8];char c2[8];char c3[8];int length1 = sprintf(c1, "%o", aa);int length2 = sprintf(c2, "%d", aa);int length3 = sprintf(c3, "%X", aa);cout << c1 << endl; // 36cout << c2 << endl; // 30cout << c3 << endl; // 1E  3、头文件   #include"sstream"int aa = 30;stringstream ss;ss << aa;string str1 = ss.str();cout << str1 << endl; // 30 string str2;ss >> str2;cout << str2 << endl; // 30   String 转 int1、string str = "123";int a = atoi(str.c_str()); 2、stringstream ss;string str = "30";ss << str;int a;ss>>a;cout << a << endl; 3、int i;string str = "17";char* ch = (char*)str.c_str();sscanf(ch, "%o", &i);cout << "八进制:" << i << endl; // 15 sscanf(ch, "%d", &i);cout <<"十进制:"<< i << endl; // 17 sscanf(ch, "%X", &i);cout << "十六进制:" << i << endl; // 23  Char[] 转 int char a[10]="100";int b = atoi(a);cout << b+1 << endl; Char* 转 int char *a= "100";int b = atoi(a);cout << b+1 << endl; String 转 doublestring a = "100.1";double b = atof(a.c_str());cout << b+1 << endl; Char* 转 doublechar *a= "100.1";double b = atof(a);cout << b+1 << endl; Char[] 转 doublechar a[]= "100.1";double b = atof(a);cout << b+1 << endl; Char[] 转 char*char c[33] = "nihao";char* p = c; Char* 转char[]char* p = "jianren";char c1[22];strcpy_s(c1, p);cout << c1 << endl; 注意,与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*。String 转 const char*string s1 = "abcdeg";const char *k = s1.c_str();const char *t = s1.data();cout << k << endl<< t << endl; 如上,都可以输出。内容是一样的。但是只能转换成const char*,如果去掉const编译不能通过。那么,如果要转换成char*,可以用string的一个成员函数copy实现。  String 转 char*1、string str = "hello";int len = str.length();char *p;p = (char*)malloc(sizeof(sizeof(char*)*(len + 1)));str.copy(p, len, 0); //这里5,代表复制几个字符,0代表复制的位置*(p + len) = '\0'; //要手动加上结束符cout << p << endl; 2、string str = "abc";char *p = (char*)str.data();cout << p << endl; 3、string str = "gdfd";char *p = (char*)(str.c_str());cout << p << endl;  string转换成char[]这个由于我们知道string的长度,可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了string pp = "dagah";char p[8];int i;for( i=0;i
<

<

<< str << endl;/*printf("%s", str);--这个是会出问题的,因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型*/printf("%s\n", str.c_str());  char[] 转string这个也可以直接赋值。但是也会出现上面的问题。需要同样的处理。string str;char p[10] = "nihao";str = p;cout << str << endl;/*printf("%s", str);--这个是会出问题的,因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型*/printf("%s\n", str.c_str());