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;