基于VS Stdio 2022
字符串转整型
- 将字符串转为int型
int atoi(const char *_String);
- 将字符串转为long型
long atol(const char *_String);
- 将字符串转为long型,并报告不能被转换的所有剩余部分
long strtol(const char *_String, char **_EndPtr, int _Radix);
_Radix:表示进制,范围为2~36和0
_EndPtr:指向字符串中不合法的部分
说明:若_Radix为2,则‘0’、‘1’合法,若_Radix为10,则‘0’、‘1’……‘9’合法,若_Radix为16,则‘0’,‘1’……‘f’合法
#include <iostream>
using namespace std;
void main()
{
long num_2, num_8, num_10, num_16;
char str[20] = "1079aeg";
char *str1;
num_2 = strtol(str, &str1, 2); // 二进制,10合法
num_8 = strtol(str, &str1, 8); // 8进制,107合法
num_10 = strtol(str, &str1, 10); // 10进制,1079合法
num_16 = strtol(str, &str1, 16); // 十六进制,1079ae合法
}
- 将字符串转为无符号长整型值,并报告不能被转换的所有剩余部分
unsigned long strtoul(const char *_String, char **_EndPtr, int _Radix);
整型转字符串
- int转字符串
/*
itoa(int _Value, char *_Buffer, int _Radix);
需改为_itos_s(int _Value, char *_Buffer, size_t _BufferCount, int _Radix);
_Radix:表示进制,若十进制则Radix为10
_BufferCount:存储的大小,不可以比Buffer的长度大
*/
#include <stdlib.h>
#include <stdio.h>
int main()
{
int number1 = 123456;
int number2 = -123456;
char string[16] = { 0 };
_itoa_s(number1, string, sizeof(string), 10);
printf("数字:%d 转换后的字符串为:%s\n", number1, string);
_itoa_s(number2, string, sizeof(string), 10);
printf("数字:%d 转换后的字符串为:%s\n", number2, string);
return 0;
}
- long int 转字符串
_ltoa_s(long _Value, char *_Buffer, size_t _BufferCount, int _Radix);
- 无符号长整型转为字符串
_ultoa_s(unsigned long _Value, char *_Buffer, size_t _BufferCount, int _Radix);
- int型转为宽字符串型
_itow_s(int _Value, wchar_t *_Buffer, size_t _BufferCount, int _Radix);
字符串转浮点型
- 将字符串转换为双精度浮点型值
double atof(const char *_String);
- 将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字
double strtod(const char *_String, char **_EndPtr);