首页 > 代码库 > 字符串/数字之间类型转换总结

字符串/数字之间类型转换总结

1、char向int转换

方法一:(适用于单个字符)

char ch = ‘6‘;

int num = ch - ‘0‘;   //此时num=6

方法二:(适用于字符串)

函数atoi: int atoi ( const char * str );

参数是一个char类型的数组,不能是单个char变量

char str[10] = "32352";

int num = atoi(str);

方法三:

 sscanf(str,"%d",&a);  其中str ="12234" int a

#include <stdio.h>

int main(int argc, char *argv[])

{

   int a;double d;

   char str[] = "1024";

   char strd[] = "3.1415";

    sscanf(str,"%d",&a);         //char 转 int

    sscanf(strd,"%lf",&d);             //char 转 double

   printf("%d\n",a);

   printf("%g\n",d);

    return 0;

}

2、int 向char转换

方法一:适用于单个数字

int n = 6;

char s = n +48;              //只需要将int型的值加48存储到char类型的变量中,s = ‘6‘

方法二:

char*  itoa ( int value, char * str, int base); 将int类型的value值按照base进制转换为char存储在str数组中

注:value 整型值 str要存储的数组 base 进制

#include<stdio.h>

#include <stdlib.h>

main(void)

{

       charch[100] ;

       inta = 1000;

       itoa(a,ch, 10);              //将整数1000转换为char存储到数组中

       printf("%s\n",ch);

}

3、char向double、 long int 的转换

 

doubleatof ( const char * str );              //char转double

例子:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

 

int main ()

{

 double n;

 char szInput [256];

 gets ( szInput );

  n =atof (szInput );

 printf ( "%f\n" , n);

 return 0;

}

 

longint atol ( const char * str );        //char转long int

例子:

#include <stdio.h>

#include <stdlib.h>

 

int main ()

{

  longint li;

 char szInput [256];

 printf ("Enter a long number: ");

 gets ( szInput );

  li= atol (szInput);

 printf ("The value entered is %d. The double is %d.\n",i,i*2);

 return 0;

}

4、int转为string类型

 

//int转为string类型

//许永伟

//2012-3-9

 

/*方法一:使用函数itoa()

itoa(  int   value,   char  *string,   int   radix  );  

    第一个参数:你要转化的int;  

    第二个参数:转化后的char*;  

    第三个参数:你要转化的进制;

 

先对char类型的指针处理,然后赋值给string类型的变量。

 

#include<iostream>

using namespace std;

 

int main()

{

       intstart = 333335;

       stringdest;

       char*temp = new char[dest.length()];

      

       itoa(start,temp, 10);

       dest= temp;

       cout<< dest << endl;

       system("pause");

       return0;

}

*/

/////////////////////////////////////////////////////

/*

方法二:使用sprintf函数

头文件#include<stdio.h>

 

语法: intsprintf(string format, mixed [args]...);

 

返回值:字符串长度(strlen)

 

转换字符

 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

% 印出百分比符号,不转换。

 

b 整数转成二进位。

 

c 整数转成对应的 ASCII 字元。

 

d 整数转成十进位。

 

f 倍精确度数字转成浮点数。

 

o 整数转成八进位。

 

s 整数转成字串。

 

x 整数转成小写十六进位。

 

X 整数转成大写十六进位。

 

#include <iostream> 

#include <string> 

using namespace std; 

int main() 

       /*用char数组

   int n = 30; 

   char c[20];

   sprintf(c, "%d", n); 

   cout << c << endl; 

   sprintf(c, "%o", n);     

   cout << c << endl; 

   sprintf(c, "%X", n);     

   cout << c << endl; 

    sprintf(c, "%c", n);     

   cout << c << endl; 

   float f = 24.678; 

   sprintf(c, "%f", f);     

   cout << c << endl; 

   sprintf(c, "%.2f",f);     

   cout << c << endl; 

   sprintf(c, "%d-%.2f",n, f); 

   cout << c << endl; 

    */

   /*

   int n = 30;

   string b;

       char*c =  new char[b.length()];

       sprintf(c,"%d", n);  //将int类型的n转化后赋值给c

       b= c;

   cout << b << endl; 

   system("pause"); 

   return 0; 

   

*/

///////////////////////////////////////////

/*

方法三:使用 stringstream

*/

#include <iostream> 

#include <string> 

#include <sstream> 

using namespace std; 

int main() 

   stringstream strStream; 

   int a = 100; 

   float f = 23.5566; 

   strStream << a ;

   string s = strStream.str(); 

   cout << s << endl;

       strStream.str("");    //清除数据a

       strStream<< f;

       stringb = strStream.str();

       cout<< b << endl; 

   system("pause"); 

   return 0; 

 

5、string 转int 类型

 

#include <iostream>

#include <string>

using namespace std;

int main(int argc, char *argv[])

{

   int a;

   string str = "1024";

    a= atoi(str.c_str());

   cout << a <<endl;

   return 0;

}

 

总结:

char/string  àint /float /double

以后遇到将char类型的数组或者string中的数字转换为int float double 等时,统一使用sscanf函数。

#include <stdio.h>

#include<string>

using namespace std;

int main(void)

{

  //char s[100] = "54";               //string转化为char型指针,用c_str()函数即可

  string s = "23";

       inta = 0;

       doubleb = 0;

       floatc = 0;

 

       sscanf(s.c_str(),"%d", &a);         //转int

       sscanf(s.c_str(),"%lf", &b);        //转double

       sscanf(s.c_str(),"%f", &c);          //转float

 

       printf("%d\n",a);

       printf("%.4lf\n",b);

       printf("%.3f\n", c);

  return 0;

}

Int/float/double -> char

以后遇到将int/float/double转换为char数组时,统一使用sprintf函数。

#include <stdio.h>

int main(void)

{

  inta = 100;

 float b = 3.22;

 double c = 3.3;

 char s[10];

  sprintf(s,"%d", a);

 printf("%s\n", s);

 

   sprintf(s,"%.2f", b);

  printf("%s\n", s);

 

   sprintf(s,"%.2lf", c);

  printf("%s\n", s);

  return 0;

}

Int/float/double -> string

先转换为动态开辟的char数组,然后将数组赋给string

int n = 30;

    string b;

       char *c=  new char[b.length()];

       sprintf(c,"%d", n);  //将int类型的n转化后赋值给c

       b = c;

    cout<< b << endl;