C++整型、浮点型与字符串型相符转换

前言

整型、浮点型与字符串的相互转换可以用自带的函数来实现,本人使用的是vs2015,所以下面的函数需要改变一下,请看下面的总结。

正文

一、整型转字符串型

1. int转为字符串

itoa(int _Value, char *_Buffer, int _Radix);  

需改为_itos_s(int _Value, char *_Buffer, size_t _BufferCount, int _Radix);

_Radix:表示进制,若十进制则Radix为10

_BufferCount:存储的大小,不可以比Buffer的长度大

#include <iostream>

using namespace std;

void main()
{
    int num = 10;
    char str[3];                        // str的长度最少为3,因为10虽然两位,但还有一个结束符
    _itoa_s(num, str, sizeof(str), 10);    // int转为字符串
    cout << str << endl;                // 输出结果为10
}

2. long int转为字符串

ltoa(long _Value, char *_Buffer, int _Radix);  

改为_ltoa_s(long _Value, char *_Buffer, size_t _BufferCount, int _Radix);

3. 无符号长整型转为字符串

ultoa(unsigned long _Value, char *_Buffer, int _Radix);  

改为_ultoa_s(unsigned long _Value, char *_Buffer, size_t _BufferCount, int _Radix);

4. int型转为宽字符串型

_itow(int _Value, wchar_t *_Buffer, int _Radix); 

改为_itow_s(int _Value, wchar_t *_Buffer, size_t _BufferCount, int _Radix);

二、浮点型转字符串型

1. double型转为字符串

gcvt(double _Value, int _DigitCount, char* _DstBuf);  

改为_gcvt_s(char* _Buffer, size_t _BufferCount, double _Value, int _DigitCount);

说明:显示正负号、小数点

_Digitcount:显示的位数,如1.25,显示两位是1.3(四舍五入),显示三位是1.25

#include <iostream>

using namespace std;

void main()
{
    double num = -1.235;
    char str[7];                        // 在字符串中,正负号、小数点、结束符各占一位
    _gcvt_s(str, sizeof(str), num, 3);    // double转为字符串,显示三位,1.235四舍五入为1.24
    cout << str << endl;                // 输出结果为-1.24
}

2. double转换为字符串

ecvt(double _Value, int _DigitCount, int *_PtDec, int *_PtSign);  

改为_ecvt_s(char *_Buffer, size_t _BufferCount, double _Value, int _DigitCount, int *_PtDec, int *_PtSign);

说明:不显示小数点和正负号

_PtDec:表示小数点位置,若_PtDec为1,说明小数点左边有一个数

_PtSign:表示正负号,0为正数,1为负数

#include <iostream>

using namespace std;

void main()
{
    double num = -1.235;
    int Dec, Sign;                                    // Dec:小数点位置,Sign:正负号
    char str[5];                                    // ?至少5位
    _ecvt_s(str, sizeof(str), num, 3, &Dec, &Sign);    // double转str,剔除正负号和小数点,显示三位,1235四舍五入为124
    cout << str << endl;                            // 输出结果为124
    cout << Dec << endl;                            // 输出结果为1,小数点左面有一个数
    cout << Sign << endl;                            // 输出结果为1,是负数
}

3. double转换为字符串

fcvt(double _Value, int _FractionalDigitCount, int *_PtDec, int *_PtSign);

改为_fcvt(char *_Buffer, size_t _BufferCount, double _Value, int _FractionalDigitCount, int *_PtDec, int *_PtSign);

说明:转换结果中不包含小数点和正负号

_FractionalDigitCount:取小数位数,若_FractionalDigitCount为1,则取一位小数,要四舍五入

#include <iostream>

using namespace std;

void main()
{
    double num = -1.235;
    int Dec, Sign;                                    // Dec:小数点位置,Sign:正负号
    char str[5];                                    // ?至少5位
    _fcvt_s(str, sizeof(str), num, 2, &Dec, &Sign); // double转str,剔除正负号和小数点,取两位小数,1235四舍五入为124
    cout << str << endl;                            // 输出结果为124
    cout << Dec << endl;                            // 输出结果为1,小数点左面有一个数
    cout << Sign << endl;                            // 输出结果为1,是负数
}

三、字符串型转整型

1.将字符串转为int型

int atoi(const char *_String);

2. 将字符串转为long型

long atol(const char *_String);
3. 将字符串转为long型,并报告不能被转换的所有剩余部分

long strtol(const char *_String, char **_EndPtr, int _Radix);

_Radix:表示进制,范围为2~36和0

_EndPtr:指向字符串中不合法的部分

说明:若_Radix为2,则‘0’、‘1’合法,若_Radix为10,则‘0’、‘1’……‘9’合法,若_Radix为16,则‘0’,‘1’……‘f’合法

#include <iostream>

using namespace std;

void main()
{
    long num_2, num_8, num_10, num_16;
    char str[20] = "1079aeg";
    char *str1;
    num_2 = strtol(str, &str1, 2);        // 二进制,10合法
    cout << num_2 << endl;                // 输出2,二进制10在十进制中为2
    cout << str1 << endl;                // 输出不合法的79aeg
    num_8 = strtol(str, &str1, 8);        // 8进制,107合法
    cout << num_8 << endl;                // 输出71,八进制107在十进制中为71
    cout << str1 << endl;                // 输出不合法的9aeg
    num_10 = strtol(str, &str1, 10);    // 10进制,1079合法
    cout << num_10 << endl;                // 输出1079
    cout << str1 << endl;                // 输出不合法的aef
    num_16 = strtol(str, &str1, 16);    // 十六进制,1079ae合法
    cout << num_16 << endl;                // 输出1079726,十六进制1079ae在十进制中为1079726
    cout << str1 << endl;                // 输出不合法的g
}

------

如若想详细了解该函数,请看strtol()详解

4. 将字符串转为无符号长整型值,并报告不能被转换的所有剩余部分

unsigned long strtoul(const char *_String, char **_EndPtr, int _Radix);

四、字符串型转浮点型

1. 将字符串转换为双精度浮点型值

double atof(const char *_String);

2. 将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字

double strtod(const char *_String, char **_EndPtr);

参考资料

C语言itoa()函数和atoi()函数详解(整数转字符C实现)
有关int,float,double型与字符串char*类型的相互转换
Strtol()详解
时间: 2024-10-12 13:00:34

C++整型、浮点型与字符串型相符转换的相关文章

010整型、浮点型、字符串型、列表型、字典型、布尔型

整型.浮点型.字符串型.列表型.字典型.布尔型 一.整型(int) 1.1作用 表示人的年龄.各种号码.级别 1.2定义 age = 18 # age=int(18) print(id(age)) print(type(age)) print(age) 输出结果: 4530100848 <class 'int'> 18 1.3 如何用 加减乘除.逻辑判断(大于.小于) 二.浮点型(float) 2.1 作用 表示身高.体重.薪资 2.2 定义 salary = 2.1 # salary=flo

以php中的自增自自减运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据

1 // 环境 2 // 3 // php版本 4 // PHP 7.0.33-0+deb9u1 (cli) (built: Dec 7 2018 11:36:49) ( NTS ) 5 // Copyright (c) 1997-2017 The PHP Group 6 // Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies 7 // with Zend OPcache v7.0.33-0+deb9u1, Copyrig

有关包装类拆箱、装箱和整型与字符串型之间的转换

原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5462489.html 1.8种基本数据类型都有各自的包装类,其对应关系为: 基本————————————包装类 byte————————————Byte short———————————Short char————————————Char int————————————Integer long————————————Long float————————————Float double———

C语言中字符型和字符串型的区别?

C语言中只有字符型类型,没有字符串型类型.字符类型用一个带符号的8位二进制编码表示,其性质与int相同,只是只有一个字节.表示字符的ASCII编码使用其中的0~127,所以要明白字符类型(char)其实是一个一字节整型,并不只用来表示字符.由于C中没有字符串类型,所以在处理字符串时是利用字符型数组来实现的,在字符型数组中一个接一个地存储字符的ASCII编码,并在最后一个字符后加一个'\0'表示这一串字符结束了,就形成所谓“字符串”.

今日学习内容回顾 一、基本数据类型 二、字符串型及内置方法 三、列表型及内置方法

一.基本数据类型int类型.float类型1.用途:int:记录年龄.电话号码.QQ号码 float:薪资.身高等 2.定义方式:int(object) float(object)#int(object) int返回的结果只能是数据整型,当你将int(float型)时,返回的是该float 对象的取整部分,其他的识别不了,当你将一个不全是数字的字符串强制转化为int整型 时,系统会出现报错.这里int(object)中的对象可以是一个,也可以多个,以逗号分开如:int(x,y)进制间转换形式:i

Path形状获取字符串型变量数据

Path形状获取字符串型变量数据: var path = new Path(); path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280");

c++输出char型变量与字符串的地址

在c里面如果指针是一个基本数值型 int ,foalt ,long等,如果输出里有 cout << ptr << endl; 其中ptr是指针的名,则输出的值是指针的地址, 如果是char * (char指针) 则输出的是char指针的值. 在C++中,熟悉int和char型的变量是最基本不过的了,不过,我想,很多初学者会跟我一样,搞不懂如何输出一个char变量的地址?就举下面一个例子: int i=97; char c='a'; cout<<"line 1:

08、MySQL—字符串型

字符串型 1.Char 定长字符:指定长度之后,系统一定会分配指定的空间用于存储数据 基本语法: char(L),L代表字符数(中文与英文字母一样),L长度为0到255 2.Varchar 变长字符:指定长度之后,系统会根据实际存储的数据来计算长度,分配合适的长度(数据没有超出长度) 基本语法: Varchar(L),L代表字符数,L的长度理论值位0到65535 因为varchar要记录数据长度(系统根据数据长度自动分配空间),所以每个varchar数据产生后,系统都会在数据后面增加1-2个字节

swift数据类型_整型和浮点型

//swift中的整型和浮点型 /** * //类型推断整数是Int 浮点数是Double ,日常使用需要注意不能越界,存储时间毫秒数 英雄经验数等等之类内容容易越界 整型 大多数情况下,你不需要在代码中指定哪种整型.Swift提供了一种额外的整型,Int类型Java中的long型,它和当前平台的本地字大小相同: 在一个32位的平台,Int类型和Int32大小相同. 在一个64位的平台,Int类型和Int64大小相同. Int8(-2^7到2^7-1) UInt8(0到2^8) Int16(-2