C++中字符串与整型及浮点型转换全攻略

目录
  • 一、string 和 char []
    • 1. string 转 char []
    • 2. char [] 转 string
  • 二、char [] 与数字互转
    • 1. char [] 转整型和浮点型
    • 2. 整型和浮点型 转char []
    • 3. 整型转 char [] (特殊函数实现)

首先请出今日主角:stdlib.h (YYDS)

这个库包含有随机数,abs等许多通用函数,当然也有类型的转换

下面我们一点点来看如何完成格式转换

一、string 和 char []

1. string 转 char []

string 是一个类,而 char [] 的变量名本质上是一个地址,咋一看这俩好像不太好转换。

但是事实上我们正是可以通过地址的方式将string 中的值整体地迁移到 char [] 中:

#include <string.h>
#include <iostream>
using namespace std;
int main() {
    string s = "123.123";
    char a[101];
    strcpy(a, s.c_str());
    // strcpy(a, s.data());  // 与上方语句等价,任选其一即可
    cout << a << endl;

    // 虽然传递的是地址,但是程序会将内容直接复制到 char [] 中,所以此处改变s不影响a
    s = "456.456";
    cout << a << endl;

    return 0;
}

输出内容:

123.123
123.123

2. char [] 转 string

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    char a[100] = "123.123";
    string s = a;
    cout << s;
    return 0;
}

二、char [] 与数字互转

1. char [] 转整型和浮点型

#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    char a_chars[101] = "123.123";
    int a_int = atoi(a_chars);
    double a_double = atof(a_chars);
    cout << a_int << endl;
    cout << a_double << endl;

    return 0;
}

输出:

123
123.123

用到了头文件 stdlib.h 中的 atoi() atof() 两个函数

当然这两个函数作为标准库成员,除了可以像上面这段代码这样完成强制类型转换,处理一些特殊情况也是完全OK

#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    char a_chars[101] = "00123";
    int a_int = atoi(a_chars);
    cout << a_int << endl;

    char b_chars[101] = "-013.470";
    double b_double = atof(b_chars);
    cout << b_double << endl;

    return 0;
}

输出:

123
-13.47

如果数字较大需要转 long long long ,则使用的函数为 atol() atoll() ,用法与 atoi() 相同:

#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    char a_chars[101] = "00123";
    long a_long = atol(a_chars);  // long
    cout << a_long << endl;
    long long a_long_long = atoll(a_chars);  // long long
    cout << a_long_long << endl;

    return 0;
}

2. 整型和浮点型 转char []

#include <stdio.h>
using namespace std;
int main() {
    char a[1001];
    sprintf(a, "%.10lf", 3.1415926535);
    printf("%s", a);

    return 0;
}

绝对没有比这更香的操作了

printf 输出到终端,sprintf 可以直接输出到字符串中。如果字符串中有内容会覆盖写入,类似于写文件

另外 to_string() 函数可以胜任这项工作

警告:这个函数没有测试过比赛是否可用,请谨慎选择!!

#include <iostream>
using namespace std;
int main() {
    string s = to_string(123);
    cout << s << endl;
    return 0;
}

3. 整型转 char [] (特殊函数实现)

警告!下面这段代码只有win能用,比赛都是不行的!!

看代码:

#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    int INT = 123;
    long LONG = 123456;
    long long LONG_LONG = 123456789;
    char s[16] = {0};
    itoa(INT, s, 10);  // 要转换的数,存放结果的字符串,结果进制数(下同)
    cout << s << endl;
    ltoa(LONG, s, 10);
    cout << s << endl;
    lltoa(LONG_LONG, s, 10);  // 这里编译时有warning,原因不详
    cout << s << endl;

    return 0;
}

输出:

123
123456
123456789

atoi() atol() atoll() 反转一下就有了 itoa() ltoa() lltoa() , 还是比较好记的。

itoa() 为例,他接受三个参数,其中第三个表示输出字符串中使用的进制。这又可以在进制转换上帮我们大忙!

#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    int INT = 12;
    char s[16] = {0};
    itoa(INT, s, 2);  // 12转二进制
    cout << s << endl;
    itoa(INT, s, 8);  // 转八进制
    cout << s << endl;
    itoa(INT, s, 16);  // 十六进制
    cout << s << endl;

    return 0;
}

输出:

1100
14
c

再次警告!上面这段代码只有win能用,比赛都是不行的!!

提一嘴:文中用到了 s.c_str() 的写法。如果你需要使用 printf() 输出 string 类型的字符串,也需要这样:

#include <stdio.h>
#include <string.h>
using namespace std;
int main() {
    string str = "123";
    printf("str:%s", str.c_str());
    // printf("str:%s", str);  // 这样写真的不行

    return 0;
}

到此这篇关于C++中字符串与整型及浮点型转换全攻略的文章就介绍到这了,更多相关C++中字符串与整型及浮点型转换全内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C/C++字符串与数字互转的实现

    C数字转字符串 int sprintf(char *str, const char *format, ...); char c[10]; sprintf(c, "%d", 15); // 将整数转换成字符串 //浮点数转字符串,number为要转换的数,ndigit表示要转换的位数 char *gcvt(double number, int ndigit, char *buf); //浮点数转字符串,number为要转换的数,ndigit表示要转换的位数, decpt和sign为输出参

  • 基于C++字符串替换函数的使用详解

    在C++中,字符串替换有很多方法,这里主要说一下STL里的WString中的替换,虽然WString自带了一个Replace函数,但是只能替换一次,太不好了,因此单独写了个替换函数[函数] 复制代码 代码如下: /**         * @brief   实现字符串替换         * @param   orignStr 源串         * @param   oldStr  查找的串         * @param   newStr  替换的新串         * @return

  • C++字符串的处理详解

    目录 字符数组 总结 字符数组 双引号引起的a占两个字符,包含"\0". 字符串处理函数 连接的时候,str2中的1替换str1中的'\0'; 比较函数按照string每一个位置处的ascii值进行比较的. 计算长度的函数是不包含结束标志的. 字符串对象* 优点: 动态存储,字符串长度不再固定:自动检测字符串是否越界:封装了字符串的多种操作:能用运算符进行操作. 对于对象,可以采用方式三. C++对象不能使用gets和puts. c_str返回的是数组的首地址. C风格的字符串不可以直

  • C++字符串反转的几种方法

    通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识 /*分析过程: 假设要使传递的字符串为常量const字符串,这样操作更加灵活,可直接传递字符串字面值进行反转,常见的解决方法就是,定义一个新的与传递过来字符串长度 相等的字符数组,然后进行字符串拷贝,把str字符按从左到右放置到字符数组中,然后采用循环来对字符数组中字符反转 */ /*第一种,采用以上思路解法,传递为const类型C风格字符指针,返回为char*类型*/ //直接使用字符数组赋值 char* strr

  • C/C++字符串查找函数全面了解

    C/C++ string库(string.h)提供了几个字符串查找函数,如下: memchr 在指定内存里定位给定字符 strchr 在指定字符串里定位给定字符 strcspn 返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量 strrchr 在字符串里定位给定字符最后一次出现的位置 strpbrk 在字符串str1里定位字符串str2里任意一个首次出现的字符 strspn 返回字符串str1从开始字符到第一个不在str2中的字符个数 strstr 在字符串str1中

  • C字符串与C++字符串的深入理解

    在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串.C字符串实际上就是一个以null('\0')字符结尾的字符数组,null字符表示字符串的结束.需要注意的是:只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组. C字符串定义时可以利用"="号进行初始化,但是以后不能利用"="对C字符串进行赋值.对C字符串的操作需要通过"string"文件中定义的字符串处理函数.例如://字符串的初始化char a[11] = &

  • C++浮点型的存储方式详解

    目录 浮点型及其存储方式 一.IEEE浮点标准 二.存储方式 IEEE 754对有效数字M和指数E的规定. 重点: 根据指数域不同取值分为一下三种情况: 总结 浮点型及其存储方式 有些时候需要变量能存储带小数点的数,或者能存储极大数或极小数.这类数可以用浮点(因小数点是"浮动的"而得名)格式进行存储.C语言提供了3种浮点类型,对应三种不同的浮点格式. 当精度要求不严格时(小数点后少于六位),float类型是很适合的类型.double提供更高的精度, 对绝大多数程序来说够用了.longd

  • C++中的string类(C++字符串)入门完全攻略

    前言 string 类是 STL 中 basic_string 模板实例化得到的模板类.其定义如下: typedef basic_string <char> string; basic_string 此处可以不必深究. string 类的成员函数有很多,同一个名字的函数也常会有五六个重载的版本.篇幅所限,不能将这些原型一一列出并加以解释.这里仅对常用成员函数按功能进行分类,并直接给出应用的例子,通过例子,读者可以基本掌握这些成员函数的用法. 要想更深入地了解 string 类,还要阅读 C++

  • C++中字符串与整型及浮点型转换全攻略

    目录 一.string 和 char [] 1. string 转 char [] 2. char [] 转 string 二.char [] 与数字互转 1. char [] 转整型和浮点型 2. 整型和浮点型 转char [] 3. 整型转 char [] (特殊函数实现) 首先请出今日主角:stdlib.h (YYDS) 这个库包含有随机数,abs等许多通用函数,当然也有类型的转换 下面我们一点点来看如何完成格式转换 一.string 和 char [] 1. string 转 char

  • Android中FoldingLayout折叠布局的用法及实战全攻略

    一.概述 无意中翻到的FoldingLayout的介绍的博客,以及github地址.感觉很nice呀,于是花了点时间研究以及编写,本篇博客将带大家从最基本的原理分析,一步一步的实现我们的FoldingLayout,当然了,如果你能力过硬,可以直接下载github上的代码进行学习. 博客基本分为以下几个部分: 1.Matrix的setPolyToPoly使用 2.在图片上使用渐变和阴影 3.初步的FoldingLayout的实现,完成图片的折叠显示(可控制折叠次数.包含阴影的绘制) 4.引入手势,

  • python3中int(整型)的使用教程

    Python3支持三种不同的数值类型: 整型(int)--通常被称为是整型或整数,可以是正整数或负整数,不带小数点.Python3整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的. 浮点型(float)--浮点型数字由整数部分和小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250) 复数(complex)--复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的

  • PHP不使用内置函数实现字符串转整型的方法示例

    介绍 php字符串类型的数字如果想转成整型的数字,一般我们都是采用系统内置的API去做转换,但如果规定就不让我们去用系统内置的API转换,而是让自己去实现一个函数转换该怎么办?这里我们看下如何去实现. 系统内置 API 方式 $num = '345432123'; //(一) $num = (int)$num; //输出: //int(345432123) //(二) $num = intval($num); //输出: //int(345432123) 采用 ASCII 码方式 下面我们利用

  • Linux中搭建完整的samba服务器全攻略(centos版)

    前言 smb是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通.SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口"中断13"改造为网络文件系统. smb服务简介 后来微软对这个发展进行了重大更改,这个更改后的版本也是最常见的版本.微软将SMB协议与它和3Com一起发展的网络管理程序结合在一起,并在Windows for Workgroups和后来的Windows版本中不断加入新的功能. SMB一开始的设

  • 在Django框架中运行Python应用全攻略

    我们来假定下面的这些概念.字段和关系: 一个作者有姓,有名及email地址. 出版商有名称,地址,所在城市.省,国家,网站. 书籍有书名和出版日期. 它有一个或多个作者(和作者是多对多的关联关系[many-to-many]), 只有一个出版商(和出版商是一对多的关联关系[one-to-many],也被称作外键[foreign key]) 第一步是用Python代码来描述它们. 打开由`` startapp`` 命令创建的models.py 并输入下面的内容: from django.db imp

  • C#中将字符串转换为整型的三种解决方法总结

    在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法:(1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32(string)(3)使用int.Parse(string)或int.TryParse(string,out int) 在实际使用时,当要转换的字符串或数字带有小数时,发现它们有以下区别:(1)方法一:截断  方法二:四舍五入int a=(int)2.8; //结果为2int b=Convert.ToInt32(2.8); //b的值为3(2)int.P

  • Angularjs中UI Router全攻略

    首先给大家介绍angular-ui-router的基本用法. 如何引用依赖angular-ui-router angular.module('app',["ui.router"]) .config(function($stateProvider){ $stateProvider.state(stateName, stateCofig); }) $stateProvider.state(stateName, stateConfig) stateName是string类型 stateCon

  • Windows 系统组策略应用全攻略(中)

    四."桌面"设置 Windows的桌面就像我们的办公桌一样,需要经常进行整理和清洁,而组策略就如同我们的贴身秘书,让桌面管理工作变得易如反掌.下面就让我们来看看几个实用的配置实例: 位置:"组策略控制台→用户配置→管理模板→桌面" 1.隐藏桌面的系统图标(Windows 2000/XP/2003) 虽然通过修改注册表的方式可以实现隐藏桌面上的系统图标的功能,但这样比较麻烦,也有一定的风险.而采用组策略配置的方法,可以方便快捷地达到此目的. 比如要隐藏桌面上的&quo

  • 再Docker中架设完整的WordPress站点全攻略

    1. 安装 Docker 在我们真正开始之前,我们需要确保在我们的 Linux 机器上已经安装了 Docker.我们使用的主机是 CentOS 7,因此我们用下面的命令使用 yum 管理器安装 docker. # yum install docker # systemctl restart docker.service 2. 创建 WordPress 的 Dockerfile 我们需要创建用于自动安装 wordpress 以及其前置需求的 Dockerfile.这个 Dockerfile 将用于

随机推荐