C++11之字符串与数值之间的转换

C++11之字符串与数值之间的转换

  • 数值转换为字符串
  • 字符串转换为数值

在C++11中提供了专门的类型转换函数,程序猿可以非常方便的使用它们进行数值类型和字符串类型之间的转换。

数值转换为字符串

使用to_string()方法可以非常方便地将各种数值类型转换为字符串类型,这是一个重载函数声明位于头文件中,函数原型如下:

// 头文件 <string>
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

关于函数的使用是非常简单的,示例代码如下:

#include <iostream>
#include <string>
using namespace std;int main()
{string pi = "pi is " + to_string(3.1415926);string love = "love is " + to_string(5.20 + 13.14);cout << pi << endl;cout << love << endl;return 0;
}

字符串转换为数值

由于C++中的数值类型包括整形和浮点型,因此针对于不同的类型提供了不同的函数,通过调用这些函数可以将字符串类型转换为对应的数值类型。

// 定义于头文件 <string>
int       stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );
long      stol( const std::string& str, std::size_t* pos = 0, int base = 10 );
long long stoll( const std::string& str, std::size_t* pos = 0, int base = 10 );unsigned long      stoul( const std::string& str, std::size_t* pos = 0, int base = 10 );
unsigned long long stoull( const std::string& str, std::size_t* pos = 0, int base = 10 );float       stof( const std::string& str, std::size_t* pos = 0 );
double      stod( const std::string& str, std::size_t* pos = 0 );
long double stold( const std::string& str, std::size_t* pos = 0 );
  • str:要转换的字符串
  • pos:传出参数, 记录从哪个字符开始无法继续进行解析, 比如: 123abc, 传出的位置为3
  • base:若 base 为 0 ,则自动检测数值进制:若前缀为 0 ,则为八进制,若前缀为 0x 或 0X,则为十六进制,否则为十进制。

这些函数虽然都有多个参数,但是除去第一个参数外其他都有默认值,一般情况下使用默认值就能满足需求。关于函数的使用也给大家提供了一个例子,示例代码如下

#include <iostream>
#include <string>
using namespace std;
int main()
{string str1 = "45";string str2 = "3.14159";string str3 = "9527 with words";string str4 = "words and 2";int myint1 = std::stoi(str1);float myint2 = std::stof(str2);int myint3 = std::stoi(str3);// 错误: 'std::invalid_argument'// int myint4 = std::stoi(str4);cout << "std::stoi(\"" << str1 << "\") is " << myint1 << endl;cout << "std::stof(\"" << str2 << "\") is " << myint2 << endl;cout << "std::stoi(\"" << str3 << "\") is " << myint3 << endl;// cout << "std::stoi(\"" << str4 << "\") is " << myint4 << endl;
}

示例代码输入的结果如下:

std::stoi("45") is 45
std::stof("3.14159") is 3.14159
std::stoi("9527 with words") is 9527

从上述测试程序可以得出这样的结论,在C++11提供的这些转换函数将字符串转换为数值的过程中:

如果字符串中所有字符都是数值类型,整个字符串会被转换为对应的数值,并通过返回值返回
如果字符串的前半部分字符是数值类型,后半部不是,那么前半部分会被转换为对应的数值,并通过返回值返回
如果字符第一个字符不是数值类型转换失败

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何做代币分析:以 SHIB 币为例

作者&#xff1a;lesleyfootprint.network 编译&#xff1a;cicifootprint.network 数据源&#xff1a;SHIB Token Dashboard &#xff08;仅包括以太坊数据&#xff09; 在加密货币和数字资产领域&#xff0c;代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关…

贪心算法 —— 字典序删除字符

题目描述 给定一个单词&#xff0c;请问在单词删除t个字母之后&#xff0c;能得到的字典序最小的单词是什么&#xff1f; 输入描述 输入的第一行包含一个单词&#xff0c;有大写英文字母组成 第二行包含一个正整数t 其中&#xff0c;单词长度不超过100&#xff0c;t小于单…

qt学习:串口调试助手

目录 步骤 配置ui界面 注意 新建一个自定义复选框类MyComboBox,并继承自带的复选框类 重写一个鼠标左键按下事件,按下就发送信号 定义一个信号 本身ui界面类.h 添加头函数 定义成员数据和成员函数(槽函数) 本身ui界面类.cpp 构造函数 发送数据槽函数 接收数据…

3、Redis-List【常用】

目录 一、重要特点 二、常用命令 三、Redis中List类型应用场景 一、重要特点 ①Redis中的List&#xff0c;视为双向链表 ②Redis中的List&#xff0c;数据可以重复 二、常用命令 常用命令 格式含义例子rpush key value从右边往key中添加value值rpush hobby java pythonlpu…

保姆教程 Docker 部署微服务项目

大家好&#xff0c;我是奇兵。 文章比较长&#xff0c;请耐心看完&#xff01; 项目上线是每位学编程同学必须掌握的基本技能。之前我已经给大家分享过很多种上线单体项目的方法了&#xff0c;今天再出一期微服务项目的部署教程&#xff0c;用一种最简单的方法&#xff0c;带…

备战蓝桥杯Day18 - 双链表

一、每日一题 蓝桥杯真题之工作时长 这个题写代码做的话很麻烦&#xff0c;而且我也不一定能写出来&#xff0c;所以我直接就是用的excel来计算的时间和。 使用excel的做法 1.先把文件中的时间复制到excel中。 2.把日期和时间分到两列。 分成两列的步骤&#xff1a; 选中要…

基于单片机的节能窗控制系统设计

摘 要:本文以单片机为基础,对节能窗控制系统进行了科学设计,在满足日常生活需求的同时更好地实现节能减排目标。此设计中的节能窗控制系统,实际操作要灵活,具备可靠且稳定的性能,同时具备节能功效。 关键词:单片机;节能窗控制系统;系统设计 在节能窗等概念推广的背景…

css实现一行靠右,多行靠左

利用 inline-block 可以根据内容宽度变化的特性 如果内容多到折行了&#xff0c;那自身的宽度会和父级同宽&#xff0c;同宽后&#xff0c;产生折行&#xff0c;这时候就生效了… <!DOCTYPE html> <html lang"en"> <head><meta charset"U…

Atcoder ABC342 E - Last Train

Last Train&#xff08;最后一班火车&#xff09; 时间限制&#xff1a;2s 内存限制&#xff1a;1024MB 【原题地址】 所有图片源自Atcoder&#xff0c;题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 【样例输入…

2. this 指向问题

this 指向问题 前言 当一个函数调用时&#xff0c;会创建一个执行上下文&#xff0c;这个上下文包括函数调用的一些信息(调用栈&#xff0c;传入参数&#xff0c;调用方式)&#xff0c;this就指向这个执行上下文。 this 不是静态的&#xff0c;也并不是在编写的时候绑定的&am…

java-类和对象-构造方法

类: 属性 和 方法1. 属性 与 变量 的 区别属性 位于 类中 ,变量 位于方法中,2. void 与 returnvoid 无返回值类型return 返回XXXx, return 意味着 方法 执行 结束,return 后面表达式的数据类型必须与方法的返回值类型 一致访问修饰符 返回值类型 方法名(){}3. 方法的调…

Linux笔记-1

概述 简介 Linux是现在服务器上最常用的操作系统(OS - Operating system) - 所谓的操作系统本质上也是一个软件&#xff0c;是一个可以运行其他软件的容器如果一台服务器&#xff0c;没有安装操作系统&#xff0c;此时称之为裸机。裸机可以使用&#xff0c;在使用的时候需要使…

【MQ06】延时队列与优先级队列

延时队列与优先级队列 在消息队列的最后一篇文章中&#xff0c;我们再来学习两个非常常见的队列功能。一个是延时队列&#xff0c;一个是优先级队列。它们的应用场景非常多&#xff0c;也非常有意思&#xff0c;不同的消息队列工具都提供了不同的实现&#xff0c;同样的&#x…

40. 组合总和 II(力扣LeetCode)

文章目录 40. 组合总和 II题目描述回溯算法 40. 组合总和 II 题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff…

istio pod不启动及访问报RBAC错误问题解决

istio pod不启动问题解决 在kubernetes集群中安装istio之后&#xff0c;在创建的depoyment中已经使用了注入注解sidecar.istio.io/inject: true’配置&#xff0c;但是istio pod不创建&#xff0c;代码示例如下 kind: Deployment apiVersion: apps/v1 metadata:name: name-an…

力扣SQL50 大的国家 查询

Problem: 595. 大的国家 Code select name,population,area from World where area > 3000000 or population > 25000000;

Sora引发安全新挑战

文章目录 前言一、如何看待Sora二、Sora加剧“深度伪造”忧虑三、Sora无法区分对错四、滥用导致的安全危机五、Sora面临的安全挑战总结前言 今年2月,美国人工智能巨头企业OpenAI再推行业爆款Sora,将之前ChatGPT以图文为主的生成式内容全面扩大到视频领域,引发了全球热议,这…

【Leetcode每日一题】二分查找 - LCR 173. 点名(难度⭐)(24)

1. 题目解析 Leetcode题目链接&#xff1a;LCR 173. 点名 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 核心在于找到题目所给的连续数组中缺失的数字即可。 2.算法原理 在这个升序的数组中&#xff0c;我们发现&#xff1a; …

LeetCode # 1207. 独一无二的出现次数

1207. 独一无二的出现次数 题目 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,1,1,3] 输出&#xff1…

Java中Jenkins的应用简介

目录 Java中Jenkins的应用什么是Jenkins&#xff1f;Jenkins在Java开发中的应用示例代码和解决方案 Java中Jenkins的应用 Jenkins是一个流行的开源自动化服务器&#xff0c;可用于持续集成和持续交付。在Java开发中&#xff0c;Jenkins扮演着重要的角色&#xff0c;可以帮助团…