目录
1. 学习目标:
本文主要学习在C++当中 数字常量与字符串之间的互相转换。
2. 学习内容:
1. 数字常量------> 字符串(string)
- to_string() 函数
- std::stringstream
2. 字符串 string ------> 数字常量
1. stringstream
3. 学习结果:
3.1 to_string()
在c++11标准库中,使用std::to_string() 可以将整数转化为字符串,即最后返回一个 数字val表达的一个字符串。所以项目使用C++ 11 和之后的标准,建议使用这个方法。
1. 函数用法介绍
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);
2. CODE
#include <iostream>
#include <string>
//利用 to_string 将 整数转字符串
int main()
{
double f = 23.43;
std::string f_str = std::to_string(f);
std::cout << f_str << endl;
}
3. 注意
使用此方法可能会从构造函数 抛出异常,如果调用方打算处理这个异常,则调用方可能需要捕获下面的异常。此异常如何产生待继续了解 ❌
std::to_string() std::bad_allocstd::string
除了上面抛出的异常,std::to_string
由于格式化目的依赖本地环境,从而当多个线程同时调用 std::to_string
时可能会导致调用的部分序列化结果。 C++17 提供高性能、不依赖本地环境的替代者 std::to_chars。
3.2 stringstream
此方式是基于 c++中的样式流实现数字常量与字符串进行的转换。使用C++库 std::stringstream,它已可用于 C++11之前将 int 转换为字符串。
1. 数字常量------> 字符串(string)
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
//利用 stringstream 将整数转为字符串
int main(){
double a = 123.32;
string res;
stringstream ss;
ss << a; //✔
// ss >> res;//或者 res = ss.str(); ✔
// ss=a; 不可以这样写❌,必须写成字符流的形式
res=ss.str();//✔
cout<<res;
return 0;
}
2. 字符串 string ------> 数字常量
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int main(){
string res="1234";
stringstream ss(res);
int x=0;
ss >> x;
// x=ss; 错误 ❌
cout<<x;
return 0;
}