一、万能的 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