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

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; 

 

字符串/数字之间类型转换总结,布布扣,bubuko.com

时间: 2024-08-06 11:58:37

字符串/数字之间类型转换总结的相关文章

C++字符串类型和数字之间的转换

转载:http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html 1.字符串数字之间的转换 字符串---字符数组(1)string --> char *   string str("OK");   char * p = str.c_str(); 字符数组---字符串(2)char * -->string   char *p = "OK";   string str(p); 字符数组--

字符串与数字之间的转换

1. itoa itoa是广泛应用的非标准c语言扩展函数,头文件为 #icnlude<stdlib.h> char* itoa(int value,char* string,int radix); #include<iostream> #include<cstdlib> using namespace std; int main(){ int i=15; char str[25]; itoa(i,str,16); cout<<str<<endl;

Ptyhon :生成一个1到50的大字符串,每个数字之间有个空格 1 2 3 4 ..........50

生成一个1到50的大字符串,每个数字之间有个空格 1 2 3 4 ..........50    第一种方法 result ="" for i in range(1,51,1): #运用for语句 表示i在1到50之间 if i==50: #如果i=50时,后面不添加空格 str(i)强制转换 result=result+str(i) else: result =result+str(i)+" " #如果i不等于50时.相加后添加空格 print result 第二

C++ 11特性中string与数字之间的互相转换

在写C++时经常会遇到字符串string与int等数字之间的相互转化,在java这种语言特性特别丰富的语言中能够通过Integer和String包装类中的函数parseInt和valueOf等函数轻松转换,而在C++中一直没有特别好的处理办法. 在之前的经历中,我都是通过C++中的字符串流stringstream来进行转换的,即通过如下函数: 1 int str2int(string input){ 2 stringstream ss; 3 ss<<input; 4 int res; 5 ss

js字符串 数字 的转换

js 字符串转化成数字 的 三种方法主要有 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 一些示例如下: parseInt("1234blue"); //returns 1234parseInt("0xA"); //r

golang取两个数字之间的随机数

//取两个数字之间的随机数int64 func RandInt64(min, max int64) int64 { if min > max { return max } return rand.New(rand.NewSource(min)).Int63n(max) }

有两个地方,用到了javabean对象和属性字符串值之间的转换

1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 3.另一个是,mybatis中javeBean对象与数据库字段值之间的转换. 在sql语句的insert/update/delete语句传入javaBean对象,用#{}转换为具体的属性 在sql语句的select中,将数据库中的字段转换为javaBean的属性值. 4.只要发生javaBean的

将一串字符串数字转化为整型数字

上篇文章介绍了itoa函数的实现,今天来说说atoi函数,主要思路是:将字符串从头开始读取,跳过最前面的空格以及其他无用字符:遇到正负号,做标记:之后的字符串,遇到数字则转换,遇到其他字符则直接跳出.好了,贴下代码: 1 int atoi(char str[]) 2 { 3 int flag=0; 4 int num=0; 5 int i=0; 6 while(str[i]==' '||str[i]=='\t') //判断字符串开头是否为制表符或者空格 7 { 8 i++; 9 } 10 whi

生成随机字母字符串(数字字母混和)

1.生成随机字母字符串(数字字母混和) /// 生成随机字母字符串(数字字母混和) /// /// 待生成的位数 /// 生成的字母字符串 private string GenerateCheckCode(int codeCount) { int rep = 0; string str = string.Empty; long num2 = DateTime.Now.Ticks + rep; rep++; Random random = new Random(((int)(((ulong)num