各种基本类型与string的转换
来源:互联网 发布:千牛卖家版mac不能用 编辑:程序博客网 时间:2024/05/01 13:23
基于C++11标准
如果你用的编译器是基于最新的C++11标准,那么这个问题就变的很简单,因为<string>中已经封装好了对应的转换方法:
标准库中定义了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的作用与整数转换函数中的一样。
VS2013下编译通过
void testTypeConvert(){//int --> stringint i = 5;string s = to_string(i);cout << s << endl;//double --> stringdouble d = 3.14;cout << to_string(d) << endl;//long --> stringlong l = 123234567;cout << to_string(l) << endl;//char --> stringchar c = 'a';cout << to_string(c) << endl;//自动转换成int类型的参数//char --> stringstring cStr; cStr += c;cout << cStr << endl;s = "123.257";//string --> int;cout << stoi(s) << endl;//string --> intcout << stol(s) << endl;//string --> floatcout << stof(s) << endl;//string --> doubelcout << stod(s) << endl;}
结果如下:
5
3.140000
123234567
97
a
123
123
123.257
123.257
C++11标准之前
C++11标准之前没有提供相应的方法可以调用,就得自己写转换方法了,代码如下:
从其它类型转换为string,定义一个模板类的方法。
从string转换为其它类型,定义多个重载函数。
VS2010下编译通过
#include <strstream>template<class T>string convertToString(const T val){string s;std::strstream ss;ss << val;ss >> s;return s;}int convertStringToInt(const string &s){int val;std::strstream ss;ss << s;ss >> val;return val;}double convertStringToDouble(const string &s){double val;std::strstream ss;ss << s;ss >> val;return val;}long convertStringToLong(const string &s){long val;std::strstream ss;ss << s;ss >> val;return val;}void testConvert(){//convert other type to stringcout << "convert other type to string:" << endl;string s = convertToString(44.5);cout << s << endl;int ii = 125;cout << convertToString(ii) << endl;double dd = 3.1415926;cout << convertToString(dd) << endl;//convert from string to other typecout << "convert from string to other type:" << endl;int i = convertStringToInt("12.5");cout << i << endl;double d = convertStringToDouble("12.5");cout << d << endl;long l = 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
欢迎加入"C/C++梦之队" 学习群:226157456
- 各种基本类型与string的转换
- 各种基本类型转换成String类型
- String与基本类型之间的转换
- String与基本类型数据之间的转换
- Date数据类型、基本数据类型与String类型之间的转换
- 第七节 基本数据类型与String类型的转换
- C++中各种基本数据类型转换为string类型
- java 各种基本类型之间的转换
- String与其他基本类型的转换
- string类型与int类型的转换
- 日期类型与String类型的转换
- String类型与Integer类型的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 字符串与各种类型数的转换
- 控制台实现 字符打印正弦曲线
- Java数字证书对文件、加密、解密、签名、校验签名
- HPL环境安装、配置及初步优化方案(报告)
- rst2pdf使用(中文及样式设计)
- poj1442 Black Box treap
- 各种基本类型与string的转换
- C++ 字符串分割
- HDU 1003
- 自定义progressbar
- windows环境下配置 scons 与 gnuwin32
- 单源最短路径-jobdu-1008
- void相关的无类型变量在使用时必须强制数据类型转换问题。
- 前三天的知识回顾
- LevelDb日知录(Leveldb 实现原理)