c++数据类型间的转换

数据类型的转换
 
Int 转 string
1、
//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;//输出36
cout << "输出十进制:" << str2 << endl;//输出30
cout << "输出十六进制:" << 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; // 36
cout << c2 << endl; // 30
cout << 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 转 int
1、
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 转 double
string a = "100.1";
double b = atof(a.c_str());
cout << b+1 << endl;
 
Char* 转 double
char *a= "100.1";
double b = atof(a);
cout << b+1 << endl;
 
Char[] 转 double
char 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<pp.length();i++)
p[i] = pp[i];
p[i] = ‘\0‘;
printf("%s\n",p);
cout<<p<<endl;
 
 
 
char * 转 string
可以直接赋值。
string str;
char *p = "adghrtyh";
str = p;
cout << 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());
时间: 2024-10-08 09:07:17

c++数据类型间的转换的相关文章

Go之数据类型间的转换

一:转换语法注意 Go在不同数据类型之间赋值时需要显式的转换,不像其他如php,java可自动转换. 二:简单举例 三:数字间转换使用细节 ①:数字间类型转换从小转到大的数据类型范围,也可从大转到小的数据类型范围,只不过,大范围如int64转int8,有可能导致溢出处理,所以转换时要注意范围. 如下图就是一个典型的溢出 ②:不同数字类型之间不直接相加. 三:其他数据类型与字符串类型得转换 ①:fmt.Sprintf方式转换为字符串 ②:strconv包函数方式转换字符串类型 1)布尔类型strc

java --基本数据类型间的转换

public class changetype { public static void main(String[] args) { String ar = "true"; //String转 boolean ,只要不是"true",结果即为false; boolean ar1 = Boolean.parseBoolean(ar); if(ar1) { System.out.println("true"); //结果为true; } String

Java数据类型中String、Integer、int相互间的转换

1.Integer转换成int的方法 Integer i;  int k = i.intValue(); 即Integer.intValue(); 2.int转换成Integer int i; Integer it = new Integer(i); 3.String转换成int的方法 String str = "10";   Integer it = new Interger(str); int i = it.intValue(); 即:int i = Integer.intValu

数据类型间转换

常用数据类型间转换 str--->list      split('') list-->str   str1 = 'x'.join(l1) str-->tuple   t1 = tuple(str1) list-->tuple   t1 = tuple(l1) 字符串---->字典 a='{"name":"yct","age":10}' print(a)   # {"name":"yct

java-基本数据类型间的相互转化

迁移时间--2017年5月26日17:47:37Author:Marydon 三.java基本数据类型.封装类间的相互转化 (二)操作String 3.2.1 String拆分字符串 实现:split()方法 用法:String.split("指定字符"),指定字符如果是特殊字符串需要使用"\\"转义 举例: String cookieStr = "userId$1|userName$%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86

Python常见字符编码间的转换

学习Python,字符编码间的转换是绕不过去的一只拦路虎,不把编码彻底搞明白,总有一天它会猝不及防坑你一把. Python2.x和Python3.x在字符编码的设置上也有很大区别(Python3未来将是主流,所以Python3为主),今天我们就来一起学习下. 上一篇文章里我已经简述了Python的常见编码了,这里就不再赘述了,还不清楚的小伙伴可以先去看下:     http://www.cnblogs.com/schut/p/8406897.html 一.Unicode 和 UTF-8的纠葛 U

10-10C#基础---数据类型之间的转换

10-10  C#基础数据类型转换(熟练掌握) 第一课 数据类型之间的转换 基本类型的转换:自动转换(隐式转换)和强制转换(显示转换) 装箱转换:允许值类型隐式转换成引用类型. 拆箱转换:允许将引用类型显示转换成值类型 分为2个步骤:首先,检查对象是否超出类型范围,然后再进行转换. Object包含所有的类型,其他类型都可以转换成Object类型,但Object不能转换成其他类型. 例: int i=0 object o = i; 三种转换方式: 1).用( ).( )内是转换后的数据类型,只能

支持Word文档和其他文件格式间的转换的控件Spire.Doc for .NET

Spire.Doc for .NET是e-iceblue公司推出的一款专门对Microsoft Word 文档进行操作的.NET类控件.这款控件的主要功能在于帮助开发人员轻松快捷地生成.编辑和查看Word文档.同时,开发人员还可以通过使用Spire.Doc for .NET 设置Word文档的格式,插入图片,表格,超链接等.Spire.Doc for .NET 最大的便利之处在于它不依赖于Microsoft Word以及任何其他第三方软件.只需将此款控件安装在您的电脑上,您就可以对word文档进

C++ 各种基本类型间的转换

常用的转换方法: 流转换 STL标准函数库中函数转换 流转换 流转换主要是用到了<sstream>库中的stringstream类. 通过stringstream可以完成基本类型间的转换, 1 #include<sstream> 2 3 using namespace std; 4 5 template<typename out_type, typename in_value> 6 7 out_type convert(const in_value & t){