C++ int、double、string、char*互相转换

int to string

//方式一:
int a = 10;
char *intStr = itoa(a);
string str = string(intStr);

//方式二: 
int a = 10;
stringstream ss;
ss << a;
string str = ss.str();

//方式三:需支持C++11(推荐)
#include <string> 
std::string s = std::to_string(42);

//方式四:C++ 98即可(不支持C++11就用这个或者方式二)
 
#include <sstream>
#define SSTR( x ) static_cast< std::ostringstream & >( \
        ( std::ostringstream() << std::dec << x ) ).str()
        
//方式五: Boost
#include <boost/lexical_cast.hpp>
int num = 4;

参考文章:int转string的多种方式

double to string

//
#include <string>
#include <sstream>
//方法一:std::to_string(需支持c++11)
std::string DoubleToStringByStdToString(double value)
{

     const std::string& new_val = std::to_string(value);
     return new_val;
 }
//方法二:std::ostringstream
std::string DoubleToStringByStringStream(double value)
{
      std::ostringstream stream;
      stream << value;
      return stream.str();
}

使用方法一(std::to_string)得到的结果保留小数点后6位;
使用方法二(std::ostringstream)默认保留六位数字(小数和整数),精度可设置。

可利用std::ostringstream封装一个函数可方便设置转换精度:

//设置保留数字个数(整数和小数)
 std::string DoubleToString(const double value, unsigned int precision)                                                                                                                                                                                                          
{
    std::ostringstream out;
    if (precision > 0)
        out.precision(precision);
    out << value;
    return out.str();
}

//设置小数点后保留位数
std::string DoubleToString(const double value, unsigned int precisionAfterPoint=6)
{
	std::ostringstream out;
	// 清除默认精度
	out.precision(std::numeric_limits<double>::digits10);
	out << value;

	std::string res = std::move(out.str());
	auto pos = res.find('.');
	if (pos == std::string::npos)
		return res;

	auto splitLen = pos + 1 + precisionAfterPoint;
	if (res.size() <= splitLen)
		return res;

	return res.substr(0, splitLen);
}

参考文章:
C++11 double转化为string
istringstream、ostringstream、stringstream 类介绍

string to int/double

string to int

std::string s="233";
int i=atoi(s.c_str());

string to double

std::string s="3.141592";
double d=atof(s.c_str());

char* 、char[]、 string相互转换

参考文章:char【】,char *,string之间转换

  • 0
    点赞
  • 4
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

Barry_123

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值