我自己在学习的过程中经常会在使用 int,string,char型数组中陷入纠结....但是现在是偏用string多一些,但是每个不同的数据类型都可能会适用于不同的情况,所以学会三者之间的转化会在做题的过程中带来极大的便利。

1.string 转 char数组

string 若想转化成char型数组,借助c_str()函数,用法如下:

string s;

char ch[20];

cin>>s;

strcpy(ch, s.c_str());   //此类型函数返回的是一个指针

cout<<ch;

此时数组ch中即为字符串s中的内容。

2.char数组 转 string

在这个的转化过程中可以直接赋值,如下:

string s;

char ch[20];

cin>>ch;

s = ch;

cout<<s;

或者是,在string变量定义的时候赋值

char ch[20];

cin>>ch;

string s(ch);

cout<<s;

3.string 转 int

可以使用stoi()函数,用法如下:

string a,b;

int ia,ib;

cin>>a>>b;

ia = stoi(a);

ib = stoi(b);

cout<<ia<<" "<<ib;

这样就可以把string中的数据转化成int型的了。

4.int 转 string

首先,可以使用to_string()函数。笔者所用的IDE是VS2010,VC2010的C++库中没有实现所有的重载函数,而是只实现了其中的几个。

string转换timestamp sql string转换为char数组_int

 

所以,我在使用的时候只能使用long long 类型的代替 int 类型,代码如下:

long long i=123;    

string s = to_string(i);  

cout<<s<<endl;

在C++11的标准中,所有类型的数据都可以使用这个函数,所以我猜,在比VS2010版本更新的编译器中应该是支持int使用to_string()这个函数的。

5.char数组 转int

使用atoi()函数,代码示例如下:

char ch[] = "123";

int ic;

ic = atoi(ch);

cout<<ic;

6.int 转 char数组

itoa()函数用法示例如下:

char ch[100];

int ic;

cin>>ic;

itoa(ic,ch,10);

cout<<ch;

值得注意的是,itoa()函数只能在windows系统下使用,在Linux系统下不可以使用。

还有另外一种方法sprintf(),使用方法如下:

sprintf()函数可以把其它数据类型“写进”char型数组,代码示例如下:

char ch[100];

int ic,id;

cin>>ic>>id;

sprintf(ch,"%d%d",ic,id);

cout<<ch;

这样,不仅可以把int型的数据写进char数组中,其他任何数据都可以,并且还可以写进多个数值。