字符串(string、char*) 与 数字(int) 相互转换

一、万能的 stringstream

stringstream 可以实现 string、int 、char * 的 任意两间种 的转换

蓝桥杯、PTA 都可以使用 ! !

stringstream ss;
ss.clear();

/* 三种任意一种形式 */
char num[] = "100";
//string num = "100";
//int nun = 100;

ss << num;

/* 三种任意一种形式 */
int result;
//string result;
//char result[];

ss >> result;
cout << result;

output: 100

--------------------------------- 其 他 ---------------------------------------

二、string 转换为 数字(stoi)

string str = "010";
int a = stoi(str, 0, 10);  //目标字符串,起始位置,n进制
cout << a;   // output:10  //自动去除前导零
 
注意:此函数在 PTA 可以使用,而蓝桥杯不允许

若要用可以使用代替的函数表示,举例如下:

int stoi(string s)
{
	int len=s.size(),sum=0;
	for(int i=0;i<len;i++)
		sum=sum*10+(s[i]-'0');
	return sum;
}

三、char 型数组转换为 数字(atoi)

char s[] = "010";
int a = atoi(s);
cout << a;  // output:10  //自动去除前导零
 
注意:此函数在 PTA 可以使用,而蓝桥杯不允许

若要用可以使用代替的函数表示,举例如下:

int atoi(char s[])
{
	int len=strlen(s),sum=0;
	for(int i=0;i<len;i++)
		sum=sum*10+(s[i]-'0');
	return sum;
}

// 补充
string s1 = "010";
int a1 = atoi(s1.c_str()); // c_str()函数是将 string以 char*形式输出 
cout << a1;   // output:10

四、数字 转换为 string(to_string)

int a = 10;
string s = to_string(a);
cout << a;  // output:10

注意:此函数在 PTA 可以使用,而蓝桥杯不允许

若要用可以使用代替的函数表示,举例如下:

string  to_string(int a)
{
	string b="";
	char c[1000]={0}; //存储空间根据题目调整 
	sprintf(c,"%d",a);
	for(int i=0;i<strlen(c);i++)
		b+=c[i];
	return b;
}

五、数字 转换为 char 型数组(itoa、sprintf )

int a = 10;
char s[100]={0};
itoa(a,s,10);  //目标数字,存储 char型数组,n进制
cout << s;  // output:10

注意:此函数在 PTA 可以使用,而蓝桥杯不允许

可以用 sprintf 代替 itoa :

int a = 10;
char c[100]={0};
sprintf(c,"%d",a);  //将 a 格式化输入到 c(字符串)中 (注意没有&号)
cout << c;  // output:10

猜你喜欢

转载自blog.csdn.net/CourserLi/article/details/105958337