C++字符串和数字转换

string转数字:

1.如果只是单个数字转换:

string str = "9";

int n = str[0] - '0';

如果字符串数字>=2,可以用循环处理

2.包含十位百位或者更多位的数字转换:

#include<cstdlib>

//标准库函数,但是使用时一般会配合<string>


std::stoi()

std::stol()

std::stoll()

int stoi (const string&  str, size_t* idx = 0, int base = 10)
 
//idx是一个指针,该指针指向一个size_t类型的对象
//传入指针地址后,该对象的值会被修改为string中数值后的第一个字符所在位置
//例如stoi("123abcd",&p),返回的p指向a所在
//也可以把p的位置理解为数值部分的结束位置
//int base是进制基数,默认10进制没什么好说的
//需要注意的是stoi实质上是调用stol的

string str = "345";
int num;
num = stoi(str);

#include  <sstream>
#include  <string>

 int  str2num( string  s)
  {   
        int num;
        stringstream ss(s);
        ss>>num;
        return num;
}

 

数字转string:

1.to_string():(C++11及以上)

#include <string>

std::to_string(int)

std::to_string(long)

std::to_string(long long)

std::to_string(float)

std::to_string(double)

std::to_string(long double)

直接用方法1即可

2.利用stringstream(只适用于C++)

#include  <sstream>
#include  <string>
 string  num2str( double  i)
 {
        stringstream ss;
        ss<<i;
        return ss.str();
}

 

char*转数字

1.atoi以及相关的函数(适合C和C++)

char str[] = "345";
int num;
num = atoi(str);

相关的函数包括:C标准库还提供了 atoi, atof, atol, atoll(C++11标准) 函数将字符串转换成int,double, long, long long 型。

2.sscanf函数

char str[] = "345";
int num;
sscanf(str,"%d",&num);

 

数字转char*

1.sprintf函数(适合C和C++)

char str[50];
int num = 345;
sprintf(str,"%d",num);

 

string 转 char*

1.利用c_str()函数

string str = "345";
char * s1 = new char[10];
strcpy(s1,str.c_str());

c_str()是string类中的成员函数,作用是将string转化成char*,并在结尾处添加"\0",但是此处不能直接使用 = 进行直接赋值,而是要使用strcpy拷贝函数。因为c_str()返回的是一个临时指针,不能对其进行操作。

 

char* 转 string

1.直接利用 = 进行赋值即可。

char * str = "123";
string ss;
ss = str;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值