c++: 数字常量 与字符串之间的互化

目录

1. 学习目标:

2. 学习内容:

1. 数字常量------> 字符串(string)

2. 字符串 string ------> 数字常量

3. 学习结果:

3.1 to_string()

3.2 stringstream


1. 学习目标:

本文主要学习在C++当中 数字常量与字符串之间的互相转换。


2. 学习内容:

1. 数字常量------> 字符串(string)

  1. to_string() 函数
  2. 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;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值