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

常用的转换方法:

  1. 流转换
  2. 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){
 8
 9     stringstream stream;
10
11     stream << t;
12
13     out_type result;
14
15     stream >> result;
16
17     return result;
18
19 }

STL函数转换

标准函数库里包含了基本类型间转换的函数,在库<stdlib.h>中。

基本的函数:

itoa():将整型值转换为字符串。

ltoa():将长整型值转换为字符串。

ultoa():将无符号长整型值转换为字符串。

gcvt():将浮点型数转换为字符串,取四舍五入。

ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。

fcvt():指定位数为转换精度,其余同ecvt()。

atof():将字符串转换为双精度浮点型值。

atoi():将字符串转换为整型值。

atol():将字符串转换为长整型值。

strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。

strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。

strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。

每个函数的参数不尽相同,比如

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

含义:将整数value转换成字符串存入string, radix为转换时所用基数(保存到字符串中的数据的进制基数 2 8 10 16)

int atoi(const char* nptr)

含义:跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0‘)才结束转换,并将结果返回。

如此看来,这种方法就没有流转换灵活,方便。

实例:

(使用流转换)

#include <iostream>
#include <sstream>

using namespace std;

template<typename out_type, typename in_value>
out_type convert(const in_value & t){
    stringstream stream;
    stream << t;
    out_type result;
    stream >> result;
    return result;
}

int main()
{
    char xxx[10] = "45126";
    int i = 45641;
    i = convert<int>(xxx);//字符串转换为整型
    cout << i;
}

结果:

(使用STL函数)

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    int i = 1254876;
    char x[10];
    itoa(i, x, 10);
    cout << x << endl;

    int n;
    char* y = "45128";
    n = atoi(y);
    cout << n << endl;
}

结果:

时间: 2024-10-12 15:21:28

C++ 各种基本类型间的转换的相关文章

接口——嵌套,接口和类型间的转换,空接口类型,类型分支

1.嵌套 在 Go语言中,不仅结构体与结构体之间可以嵌套,接口与接口间也可以通过嵌套创造出新的接口. 一个接口可以包含一个或多个其他的接口,这相当于直接将这些内嵌接口的方法列举在外层接口中一样.只要接口的所有方法被实现,则这个接口中的所有嵌套接口的方法均可以被调用. 2.接口和类型间的转换 Go语言中使用接口断言(type assertions)将接口转换成另外一个接口,也可以将接口转换为另外的类型. 1)类型断言的格式 类型断言是一个使用在接口值上的操作.语法上它看起来像 i.(T) 被称为断

stringstream的用法-类型之间的转换

本文来自: http://www.builder.com.cn/2003/0304/83250.shtmlhttp://www.cppblog.com/alantop/archive/2007/07/10/27823.html 使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性.类型安全和可扩展性.在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换. 为什么要学习 如果你已习惯了&

可空值类型与值类型这间的转换

int s = 5; int? s_null; long t; long? t_null; t = s; //隐式转换 S -> T s = (int)t; //显示转换 T -> S s_null = s; //隐式转换 S -> S? s = (int)s_null; //显示转换 S? -> T t_null = s_null; //隐式转换 S? -> T? s_null = (int?)t_null; //显示转换 T? -> S? t_null = s; /

mfc 类型间的强制转换

一. static_cast运算符 用法:static_cast < type-id > ( expression ) 该运算符把expression 转换为type-id类型,但没有运行时类型检查来保证转换的安全性.它主要有如下几种用法: ①用于类层次结构中基类和子类之间指针或引用的转换. 进行上行转换(把子类的指针或引用转换成基类表示)是安全的: ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum.这种转换的安全性也要开发人员来保证. ③把空指针转换成目标类型的

不同类型数据间的转换

对于标准数据类型的转换,编译系统有章可循,知道怎样进行转换.而对用户自己声明的类型,编译系统并不知道怎样进行转换,解决这个问题的关键是让编译系统知道怎样去进行折现转换,需要定义一些专门的函数类处理. 1.转换构造函数 转换构造函数的作用是将一个其它类型的数据转换成一个类的对象以复数类Complex为例,我们来介绍一下 转换构造函数. 转换构造函数是构造函数的重载,它只有一个形参,如 Complex(double r) { _real=r; _imag=0; } 其作用是将double类型的参数r

Python常见字符编码间的转换

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

Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)

Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString());   //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 2.由long类型转换成Date类型SimpleDat

支持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文档进

java基本数据类型及相互间的转换

1.首先复习一下java的基本数据类型,见下图 2.比较他们的字节数 备注:1字节(Byte)=8位(Bit) 3.转换中的知识点 java中整数类型默认的int类型:小数类型默认的double: char 可以当做一中特殊的整数类型: int无法转换为boolean: 小数类型转为整数类型,小数可能被舍弃,所有出现精度损失,所以需要强制转换: boolean 类型不能转换成任何其它数据类型: byte b2 = 120;没报错的原因://编译时候,进行检查,看赋值大小是否超过变量的类型所容纳的