我自己在学习的过程中经常会在使用 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++库中没有实现所有的重载函数,而是只实现了其中的几个。
所以,我在使用的时候只能使用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数组中,其他任何数据都可以,并且还可以写进多个数值。