c++中数值转string操作

转载 2018年04月17日 18:55:46

目录(?)[+]

1.数值类型转换为string

1.1使用函数模板+ostringstream

使用函数模板将基本数据类型(整型、字符型、实型、布尔型)转换成string。

//ostringstream对象用来进行格式化的输出,常用于将各种类型转换为string类型
//ostringstream只支持<<操作符
template<typename T> string toString(const T& t){
    ostringstream oss;  //创建一个格式化输出流
    oss<<t;             //把值传递如流中
    return oss.str();   
}

cout<<toString(14.2)<<endl;  //实型->string:输出14.2
cout<<toString(12301)<<endl; //整型->string:输出12301
cout<<toString(123456789785)<<endl;//长整型->string:输出123456789785
cout<<toString(true)<<endl;  //布尔型->string:输出1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

1.2使用标准库函数std::to_string()

std命令空间下有一个C++标准库函数std::to_string(),可用于将数值类型转换为string。使用时需要include头文件<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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.string转换为数值类型

2.1使用函数模板+ istringstream

stringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型。

#include <iostream>  
#include <sstream>    //使用stringstream需要引入这个头文件  
using namespace std;  

//模板函数:将string类型变量转换为常用的数值类型(此方法具有普遍适用性)  
template <class Type>  
Type stringToNum(const string& str){  
    istringstream iss(str);  
    Type num;  
    iss >> num;  
    return num;      
}  

int main(int argc, char* argv[])  {  
    string str("00801");  
    cout << stringToNum<int>(str) << endl;  

    system("pause");  
    return 0;  
}  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2.2使用C标准库函数

具体做法是先将string转换为char*字符串,再通过相应的类型转换函数转换为想要的数值类型。需要包含标准库函数<stdlib.h>。 
(1)string转换为int32_t

string love="77";
int ilove=atoi(love.c_str());

//或者16位平台转换为long int
int ilove=strtol(love.c_str(),NULL,10);
  • 1
  • 2
  • 3
  • 4
  • 5

(2)string转换为uint32_t

//str:待转换字符串
//endptr:指向str中数字后第一个非数字字符
//base:转换基数(进制),范围从2至36
unsigned long int strtoul (const char* str, char** endptr, int base);

#示例
string love="77";
unsigned long ul;
ul = strtoul(love.c_str(), NULL, 10);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

(3)string转换为int64_t

string love="77";
long long llLove=atoll(love.c_str());
  • 1
  • 2

(4)string转换为uint64_t

unsigned long long int strtoull (const char* str, char** endptr, int base);

#示例
string love="77";
unsigned long long ull;
ull = strtoull (love.c_str(), NULL, 0);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(5)string转换为float或double

string love="77.77";
float fLove=atof(love.c_str());
double dLove=atof(love.c_str());
  • 1
  • 2
  • 3

(6)string转换为long double

long double strtold (const char* str, char** endptr);
  • 1

2.3使用C++标准库函数

使用C++11引入的C++库函数将string转换为数值类型,相应的库函数申明于头文件<string>中。

名称原型说明
stoiint stoi (const string& str, size_t* idx = 0, int base = 10);
int stoi (const wstring& str, size_t* idx = 0, int base = 10);
Convert string to integer (function template )
stollong stol (const string& str, size_t* idx = 0, int base = 10);
long stol (const wstring& str, size_t* idx = 0, int base = 10);
Convert string to long int (function template)
stoulunsigned long stoul (const string& str, size_t* idx = 0, int base = 10);
unsigned long stoul (const wstring& str, size_t* idx = 0, int base = 10);
Convert string to unsigned integer (function template)
stolllong long stoll (const string& str, size_t* idx = 0, int base = 10);
long long stoll (const wstring& str, size_t* idx = 0, int base = 10);
Convert string to long long (function template)
stoullunsigned long long stoull (const string& str, size_t* idx = 0, int base = 10);
unsigned long long stoull (const wstring& str, size_t* idx = 0, int base = 10);
Convert string to unsigned long long (function template)
stoffloat stof (const string& str, size_t* idx = 0);
float stof (const wstring& str, size_t* idx = 0);
Convert string to float (function template )
stoddouble stod (const string& str, size_t* idx = 0);
double stod (const wstring& str, size_t* idx = 0);
Convert string to double (function template )
stoldlong double stold (const string& str, size_t* idx = 0);
long double stold (const wstring& str, size_t* idx = 0);
Convert string to long double (function template)


形参说明: 
str:重载了string和wstring版本,表示被转换的字符串。

idx:表示一个size_t*的指针类型,默认为空值。不为空时,转换成功时获取第一个非数值字符的下标。一般情况下,因为它是直接char型指针把最后非数值字符的地址值和起始地址值相减,所以也表示成功转换的字符数量,如”10”转成功为数值10时,*idx的值为2。

base:表示转换基准,默认是10进制。

c++ string 类的 ”数值转换“ 操作

实现标准库string和数值数据之间的转换。int a = 45; string s = to_string(a);//将整数转换为string表示形式 double d = stod(s);//将字...
  • u014427196
  • u014427196
  • 2015-07-26 11:01:34
  • 601

C++数值与字符串相互转换

from: http://blog.csdn.net/w343051232/article/details/7076188 以前一门心思搞算法,这个东西觉得自己写个函数就能实现的事,但是...
  • fruitz
  • fruitz
  • 2014-11-30 16:44:05
  • 3547

C++中string对象与数值相互转换

1.将数值转换为string 方法一: 需要头文件   #include ostringstream o; if(o
  • y12345678904
  • y12345678904
  • 2016-08-09 00:48:10
  • 311

C++里的CString转成String怎么弄?大家都知道吗

问题:怎么把C++里的CString转成String? 回答: 首先你要知道CString是MFC的类,不是C++本身的,而C++也没有String的 C++的STL只有string,注意C++...
  • u012187684
  • u012187684
  • 2016-08-03 18:46:08
  • 1394

C++ 数字、string 简便互转

C++ 数字、string 两种类型的极为方便的互相转化方法
  • yOung_One
  • yOung_One
  • 2014-08-29 16:56:18
  • 1624

【C++】字符串和数值类型的相互转化(借助STL)

在C++编程中有时会遇到字符串和数字的相互转化,以前学习的时候老师喜欢将这种转化当成作业,要我们写函数实现。但是实际为了方便准确还是会优先使用STL来完成。      在 C 标准库中提供了字符串到数...
  • xiaohui_hubei
  • xiaohui_hubei
  • 2014-03-14 17:34:58
  • 3416

C++数字转换成字符串(to_string)

std::to_string C++ Strings library std::basic_string Defined in header (1) std::string to_string...
  • oNever_say_love
  • oNever_say_love
  • 2016-08-12 00:22:08
  • 11237

C++中处理字符串的Class-----string 用法详解

C++ string 用法详解 /////////////////////////////////////////////////////////////////////////////////// ...
  • bzhxuexi
  • bzhxuexi
  • 2013-11-29 09:57:19
  • 2116

double与string的相互转化(C++)

#include using namespace std; /** * double转换为string */ string convertToString(double d) { ostring...
  • u012411003
  • u012411003
  • 2014-03-24 15:19:00
  • 4278

C++ 将字符串转换成date类型的数据

#include       /* time_t, struct tm, time, localtime, strftime */ #include #include #include c...
  • u010548686
  • u010548686
  • 2014-04-11 11:26:05
  • 1101
收藏助手
不良信息举报
您举报文章:c++中数值转string操作
举报原因:
原因补充:

(最多只允许输入30个字)