一.字符串转换为数字
- 利用sscanf() 将字符串转化为数字
#include <iostream>
#include <string>
using namespace std;
// sscanf() 用于将字符串转化为数字
int main()
{
char str[]="9";
int a;
sscanf(str,"%d",&a);
cout<<a<<endl;
char str1[]="9.9";
double b;
sscanf(str1,"%lf",&b);
cout<<b<<endl;
}
- 利用stringstream
字符串格式转换 ss >>
过程:string -> stringstream对象 -> 数字
#include <string>
#include <sstream>
#include<iostream>
using namespace std;
int main(){
double d ;
string res= "-1";
stringstream ss;
//string->double
ss << res;
ss >> d;
cout<<"d="<<d<<endl;
//string->int
ss.clear();//stringstream对象清零
int i;
ss<<res;
ss>>i;
cout<<"i="<<i<<endl;
//string->unsigned int
ss.clear();//stringstream对象清零
unsigned int ui;
ss<<res;
ss>>ui;
cout<<"ui="<<ui<<endl;
return 0;
}
二.数字转换字符串
# include <stdio.h>
# include <stdlib.h>
int main ()
{
int num_int = 435;
double num_double = 435.10f;
char str_int[30];
char str_double[30];
itoa(num_int, str_int, 10); //把整数num_int转成字符串str_int
gcvt(num_double, 8, str_double); //把浮点数num_double转成字符串str_double
printf("str_int: %s\n", str_int);
printf("str_double: %s\n", str_double);
return 0;
}
注:
● 代码第11行中的参数10表示按十进制类型进行转换,转换后的结果是“435”,如果按二进制类型进行转换,则结果为“1101110011”。
● 代码第12行中的参数8表示精确位数,这里得到的结果是“435.10001”。
三.字符转换为字符串
#include <stdio.h>
int main(void)
{
int num = 9 ;
//26个字母
const char str[] = "abcdefghijklmnopqlstuvwxyz" ;
//这个做法是将num这个十进制数通过取模转换为字母并输出,从程序看,即可知道是输出j
char a = str[num%26] ;
printf("a=%c\n",a);
return 0 ;
}
或者使用指针形式
#include
#include
int main(void)
{
int num =9 ;
char *str = "abcdefghijklmnopqlstuvwxyz" ;
char a = str[num%26] ;
printf("a=%c\n",a);
return 0 ;
}
四.字符串转换为字符
五.字符转换为数字
最简单的是让数字字符去减‘0’得到的就是数字的值。
#include<bits/stdc++.h>
using namespace std;
int main(){
//对于char / char[]
char s[1001];
cout<<"input:"<<endl;
cin.getline(s, 1000);
//iostream下的函数, 第二个参数表示允许的最大输入长度
cout<<"Output:"<<endl<<s<<endl<<strlen(s)<<endl;
//对于string
string ss;
cout<<"input string:"<<endl;
getline(cin, ss); //这个getline函数在<string>头文件下
cout<<"Output:"<<endl<<ss<<endl<<ss.length()<<endl;
return 0;
}
六.数字转字符