我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

首先请出今日主角: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++中字符串与整型及浮点型转换全内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 如何将带小数的浮点型字符串转换为整数

以下内容在python中完全可以接受: 1、将整数的字符串表示形式传递给 int 2、将float的字符串表示形式传递给 float 但是,如果你将float型的字符串传递给int将会得到错误。>>> int('5') 5 >>> floa
2022-06-02

怎么在C++中将长整型数转换为字符串

这篇文章将为大家详细讲解有关怎么在C++中将长整型数转换为字符串,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++实现将长整型数转换为字符串/* * Created by Chimomo
2023-06-14

怎么在C语言中对字符串与各数值类型进行转换

本篇文章给大家分享的是有关怎么在C语言中对字符串与各数值类型进行转换,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先放上一段展示各函数使用的代码,大家也可以copy到自己的机
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录