目前对C语言的使用比较多,C++ 的经验不是很多。
用stringstream 实现 C 中的sprintf 以及atoi函数的方法。
#include <iostream>
#include <string>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
int i=24;
string name("liukang");
//C++ stringstream int->str;
stringstream sstr;
sstr<<"my name :"<<name<<","<<i<<";"<<hex<<i;
string str=sstr.str();
cout<<str<<endl;
//C sprintf()
char buf[100]={0};
sprintf(buf, "my name :%s,%d;%x",name.c_str(),i,i);
cout<<buf<<endl;
//C++ stringstream str->int;
int num=0;
string p("30");
stringstream ss;
ss<<p;
ss>>num;
cout<<"num="<<num<<endl;
//C atoi()
int n=0;
cout<<"num="<<atoi(p.c_str())<<endl;
return 0;
}
两个常用API:
#include <iostream>
#include <algorithm>
#include <string>
#include <numeric>
#include <vector>
#include <cstdio>
#include <sstream>
using namespace std;
//c++方法:将数值转换为string
string convert_to_string(double x)
{
ostringstream o;
if(o << x)
return o.str();
return "conversion error";
}
//c++方法,将string转化为数值
double convert_from_string(const string &s)
{
istringstream i(s);
double x;
if(i >> x)
return x;
return 0.0;
}
int main(int argc,char *argv[])
{
//将数值转换为string的第一种方法:c方法
char b[10];
string a;
sprintf(b,"%d",1975); //数值转化为string
a=b;
cout<<a<<endl;
string cc=convert_to_string(1976);
cout<<cc<<endl;
string dd="115165";
int p=convert_from_string(dd)+2;
cout<<p<<endl;
return 0;
}