首先推荐用用C++的stringstream。
主要原因是操作简单。
数字转字符串,int float类型 同理
#include <string>
#include <sstream>
int main(){
double a = 123.32;
string res;
stringstream ss;
ss << a;
ss >> res;//或者 res = ss.str();
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
字符串转数字,int float类型 同理
int main(){
string a = "123.32";
double res;
stringstream ss;
ss << a;
ss >> res;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
上面方法的优点就是使用简单方便,确定可能会相对别的方法来说慢一点,但是一般少量的数据可以忽略该因素。
c++中atoi函数
1、atoi函数把字符串转换成整型数。其含义是ASCII to integer 的缩写。
2、函数说明
1)简介编辑C语言库函数名
atoi
原型:
int atoi(const char *nptr);
UNICODE
_wtoi()
2)函数说明编辑参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零,
所需包含头文件: #include <stdlib.h>
程序例:
1)
1
2
3
4
5
6
7
8
9
10
|
#include <stdlib.h>
#include <stdio.h>
int
main(
void
)
{
float
n;
char
*str =
"12345.67"
;
n =
atoi
(str);
printf
(
"string = %s integer = %f\n"
, str, n);
return
0;
}
|
执行结果:
string = 12345.67 integer = 12345.000000
2)
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdlib.h>
#include <stdio.h>
int
main()
{
char
a[] =
"-100"
;
char
b[] =
"123"
;
int
c ;
c =
atoi
( a ) +
atoi
( b ) ;
printf
(
"c = %d\n"
, c) ;
return
0;
}
|
执行结果:
c = 23
简单的实现atoi函数C语言
源代码:
1
2
3
4
5
6
7
8
9
10
|
#include <ctype.h>
int
my_atoi(
const
char
* p){
assert
(p != NULL);
bool
neg_flag =
false
;
// 符号标记
int
res = 0;
// 结果
if
(p[0] ==
'+'
|| p[0] ==
'-'
)
neg_flag = (*p++ !=
'+'
);
while
(
isdigit
(*p)) res = res*10 + (*p++ -
'0'
);
return
neg_flag ?0 -res : res;
}
|
注:string类型转int的话,要先把string转成char形数组形式调用c_str()函数;
string s=“123456”;
int num =atoi(s.c_str());
(改编自百度百科)