#include <iostream>
#include <sstream>
using namespace std;
int main()
{
/*----------------------------------
十六进制,八进制转十进制
----------------------------------*/
int decimal1,decimal2;
string oct_test = "75";
string hex_test = "A3";
stringstream ss1;
ss1.str(oct_test);
ss1>>oct>>decimal1;
cout<<"Convert oct to decimal:"<<decimal1<<endl;
//ss1.clear();//若不想从新定义stringstream流,必须先清空ss1中的缓存
stringstream ss2;
ss2.str(hex_test);
ss2>>hex>>decimal2;
cout<<"Convert hex to decimal:"<<decimal2<<endl;
/*----------------------------------
十进制转八进制、十六进制
----------------------------------*/
int decimal;
stringstream ss,sss;
cout<<"Enter a decimal number:";
cin>>decimal;
/*下面两句等价于:
cout<<"Convert to hex:"<<hex<<decimal<<endl;
*/
//十进制转十六进制
ss<<hex<<decimal;
cout<<"Convert to hex:"<<ss.str()<<endl;
//十进制转八进制
ss.str(""); //同上,若不想从新定义stringstream流,必须先将ss.str()置为空
ss<<oct<<decimal;
cout<<"Convert to oct:"<<ss.str()<<endl;
system("pause");
return 0;
}
sscanf函数
sscanf函数原型为int sscanf(const char *str, const char *format, ...)。将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数内。具体功能如下:
(1)根据格式从字符串中提取数据。如从字符串中取出整数、浮点数和字符串等。
(2)取指定长度的字符串
(3)取到指定字符为止的字符串
(4)取仅包含指定字符集的字符串
(5)取到指定字符集为止的字符串
当然,sscanf可以支持格式串"%[]"形式的,有兴趣的可以研究一下。
int main(){
char s[15] = "123.432,432";
int n;
double f1;
int f2;
sscanf(s, "%lf,%d%n", &f1, &f2, &n);
cout<<f1<<" "<<f2<<" "<<n;
return 0;
}
UINT64 n=0;
sscanf("fffff8016c432238", "%llx", &n);
来源:CSDN
作者:YuHengZuo
链接:https://blog.csdn.net/YuHengZuo/article/details/104071983