c++转string double int float_c++ string转float_低到尘埃89的博客-程序员秘密

技术标签: c++  

【整理】C++ string转int,string转double,string转long,int转string,double转string…

wudroid 2017-03-16 12:54:27

27879

收藏 19
原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【整理】C++ string转int,string转double,string转long,int转string,double转string…
C++开发中,经常遇到各种基本类型与string的转换,掌握本博文,便可以轻松应对C++各基本类型与string的转换(比如:
int转string,double转string,long转string,string转int,string转double,string转long
…)。
第一种:基于C++ 11标准:
基于C++11标准
如果你用的编译器是基于最新的C++11标准,那么这个问题就变的很简单,因为中已经封装好了对应的转换方法:
标准库中定义了to_string(val);可以将其它类型转换为string。还定义了一组stoi(s,p,b)、stol(s,p,b)、stod(s,p,b)等转换函数,可以函数,可以分别转化成int、long、double等.
stoi(s,p,b);stol(s,p,b);stoul(s,p,b);stoll(s,p,b);stoull(s,p,b); 返回s的起始子串(表示整数内容的字符串)的数值,返回值的类型分别为:int、long、unsigned long、long long、unsigned long long.其中b表示转换所用的基数,默认为10(表示十进制).p是size_t的指针,用来保存s中第一个非数值字符的下标,p默认为0,即函数不返 回下标.
stof(s, p); stod(s, p); stold(s, p); 返回s的起始子串(表示浮点数内容)的数值,返回值的类型分别是float、double、long double.参数p的作用与整数转换函数中的一样。
voidtestTypeConvert()
{
//int --> string
inti = 5;
string s = to_string(i);
cout << s << endl;
//double --> string
doubled = 3.14;
cout << to_string(d) << endl;
//long --> string
longl = 123234567;
cout << to_string(l) << endl;
//char --> string
charc = ‘a’;
cout << to_string << endl; //自动转换成int类型的参数
//char --> string
string cStr; cStr += c;
cout << cStr << endl;

s = "123.257";
//string --> int;
cout << stoi(s) << endl;
//string --> int
cout << stol(s) << endl;
//string --> float
cout << stof(s) << endl;
//string --> doubel
cout << stod(s) << endl;

}

第一种方法记得编译的时候加上支持C++ 11的参数:-std=c++0x
输出结果:
5
3.140000
123234567
97
a
123
123
123.257
123.257

第二种:C++ 11标准之前:
C++11标准之前
C++11标准之前没有提供相应的方法可以调用,就得自己写转换方法了,代码如下:
从其它类型转换为string,定义一个模板类的方法。
从string转换为其它类型,定义多个重载函数。
#include
template
string convertToString(constT val)
{
string s;
std::strstream ss;
ss << val;
ss >> s;
returns;
}

intconvertStringToInt(conststring &s)
{
intval;
std::strstream ss;
ss << s;
ss >> val;
returnval;
}

doubleconvertStringToDouble(conststring &s)
{
doubleval;
std::strstream ss;
ss << s;
ss >> val;
returnval;
}

longconvertStringToLong(conststring &s)
{
longval;
std::strstream ss;
ss << s;
ss >> val;
returnval;
}

voidtestConvert()
{
//convert other type to string
cout << “convert other type to string:” << endl;
string s = convertToString(44.5);
cout << s << endl;
intii = 125;
cout << convertToString(ii) << endl;
doubledd = 3.1415926;
cout << convertToString(dd) << endl;

//convert from string to other type
cout << "convert from string to other type:" << endl;
inti = convertStringToInt("12.5");
cout << i << endl;
doubled = convertStringToDouble("12.5");
cout << d << endl;
longl = convertStringToLong("1234567");
cout << l << endl;

}

结果如下:
convert other type to string:
44.5
125
3.14159
convert from string to other type:
12
12.5
1234567

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pengpeng8738126/article/details/109811600

智能推荐

Solidworks二次开发系列入门1_solidworks二次开发教程_BT-君的博客-程序员秘密

Solidworks二次开发系列入门1基本介绍基本介绍SolidWorks二次开发其实就是使用API函数对SolidWorks设计中一些重复繁琐的工作让计算机代替完成,起到辅助设计的作用。SolidWorks的二次开发是建立在软件提供的API函数的基础上的,并且传统的二次开发大多选用面向对象技术的设计方式,而SolidWorks的API对象结构是一个自上而下的多层树型网络结构,设计对象结构关系如图1.1所示。在二次开发过程中,COM编程允许SolidWorks将实际的对象函数功能与外部世界联系,提供

spring 定时器配置 摘自 那年那月那天_ZHANGYING1987211的博客-程序员秘密

1、 Spring 的org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean类,使用此方法使开发人员对Quartz完全透明,需要实现定时任务的方法只是一个普通方法。[html]&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;beans...

Python练习 -- 通过电影票房数据统计不同类型的票房总数_Jahree的博客-程序员秘密

Python练习 – 对单元格进行拆分并保留其他行数据1.需求从一份电影票房数据中按照电影类型分类,统计出不同类型的票房总数2.数据处理在前期的数据处理中需要将各个电影类型进行拆分,通过以下python代码实现data = pd.read_csv('movie_metadata.csv')data_new = data.drop(['genres'], axis=1).join(d...

android判断service是否启动,Android中判断Service是否启动了_weixin_39632728的博客-程序员秘密

前言偶然需要使用,记录于此。好记性不如烂笔头正文有时候需要盘服务是否启动,如果没有启动就需要拉起来PS:SERVICE_PACKAGENAME和SERVICE_NAME分别是定义的包名和服务包名,这里省略。/*** start service*/private void startService() {try {if (!isServiceRunning(SERVICE_NAME)) {Inten...

随便推点

Python绘图-Pygal-pygal_api_draw.py_pygal api_cssguzhe的博客-程序员秘密

Python绘图-Pygal-pygal_api_draw.py演示了通过获取API数据采用pygal绘图。根据博文https://blog.csdn.net/weixin_43091089/article/details/99792892对字体大小设置进行了修正。可以实现从GitHub上获取星数最高的Python项目,对前30个项目的星数绘制条形图并当鼠标放置到相应条形bar上时能显示项目的简要信息,点击后能跳转到相应的GitHub网页。代码如下:# ~ coding=UTF-8import

Python 爬取大众点评 50 页数据,最好吃的成都火锅竟是它!_CSDN 程序人生的博客-程序员秘密

作者 | 胡萝卜酱责编 | 伍杏玲成都到处都是火锅店,有名的店,稍微去晚一点,排队都要排好久,没听说的店,又怕味道不好。那么如何选择火锅店呢?最简单的肯定是在美团。大众点...

关于在main.cpp文件中包含另一个.cpp文件的错误及原因_c++多个程序 main包含不同的cpp__萤火的博客-程序员秘密

转自: https://blog.csdn.net/candcplusplus/article/details/7036917今天打开自己以前写代码突然觉得在man函数中如果要用的很多自己实现的函数,如果把它们都放在main.cpp文件中太臃肿了。调试起来特别不方便。能不能把这些自己实现的函数放到另外一个文件中呢?可是又不能把这些函数放在.h文件中。因为书上说.h文件中做好只放结构体、类等的申...

matlab中图像边缘提取,Matlab图像处理(五)——图像边缘提取_书果的博客-程序员秘密

上一讲小白为小伙伴们带来了如何使用自编函数和自带函数对图像进行滤波,去除图像的噪声。这次小白为大家带来滤波的新用处——边缘提取。什么是图像边缘所谓图像边缘(Edlge)是指图像局部特性的不连续性,例如,灰度级的突变,颜色的突变,纹理结构的突变等。边缘广泛存在于目标与目标、物体与背景、区域与区域(含不同色彩)之间,它是图像分割所依赖的重要特征。小白今天主要介绍几种典型的图像灰度值突变的边缘检测方法...

终端_xialiangzhao的博客-程序员秘密

基本概念终端和控制台都不是个人电脑的概念,而是多人共用的小中大型计算机上的概念。终端为主机提供了人机接口,一台主机可以连很多物理终端,每个人都通过终端使用主机的资源。终端有字符终端(RS-232串口)和图形终端两种。控制台是另一种人机接口, 不通过终端与主机相连,而是通过显示卡-显示器和键盘接口分别与主机相连,这是人控制主机的第一人机接口。现在的个人计算机一般只有一个控制台(键盘加上显示器...

a标签下载跨域文件,解决download失效问题_珠珠侠的小跟班的博客-程序员秘密

downloadFile: function (url, fileName) {//跨域文件路径、下载到本地的文件名 var x = new XMLHttpRequest(); x.open("GET", url, true); x.responseType = 'blob'; x.onload=fun...

推荐文章

热门文章

相关标签