C++中string、int常见类型转换(含代码演示)

来源:互联网 发布:大华pss监控软件 编辑:程序博客网 时间:2024/06/08 10:00

刚才转载了别人的一篇有关string、int类型转换的博文,现在我想根据被人写的自己写代码验证一下。今天做codeforces的时候也用到了类型转换,一会再写一下关于那个codeforces的总结。

1.int转string

#include<iostream>#include<string>#include <sstream>using namespace std;int main(){int n;string s;cin >> n;stringstream stream;stream << n;s= stream.str();      //str()函数设置或获取字符串缓冲区中的文本,而写入更改位置。cout << s.length() << endl;return 0;}
可以发现,int确实转换成了字符串且有了长度length。

2、string转int

这个比较常用,尤其是在比较string所包含的数字大小的时候,比如说sting s=192 string t=23,正常情况下比较的是ASCII码,所以t要比s大。但实际上这时候的我目的是比较它们所代表的数的大小,此刻把string转为int就显得尤为好用了。
#include<iostream>#include<string>#include <sstream>using namespace std;int main(){string s;cin >> s;int n;stringstream stream(s);stream >> n;if (n > 23)cout << 1 << endl;elsecout << 0 << endl;return 0;}

在我的举例中,我输入的数字是119,我设置的阈值是23,如果比较string类型的话,那么119是小于23的代码的输出应该就是0,而这里输出的是1说明string确实转换成了int类型的了。注意上面两个例子都用了“流”,这些东西是我不怎么熟悉的。

3、借助现成的函数实现类型转换

int转字符串,但是这里转的结果是字符型char类型的数组,所以有时候并不是十分的方便。
#include<iostream>#include<string>#include <sstream>using namespace std;int main(){int n;cin >> n;string s;char stmp[12];             //设定12位对于存储32位int值足够  _itoa_s(n, stmp, 10);            //itoa函数亦可以实现,但是属于C中函数,在C++中推荐用流的方法  s = stmp;cout << s.length() << endl;return 0;}


可以看到我输入了一个整数,输出了一个长度,说明转换成功了。注意在新版本的编译器中,itoa函数要做适当的修改,加下杠或s保证安全性才能通过编译。

string转int
#include<iostream>#include<string>#include <sstream>using namespace std;int main(){string s;cin >> s;int n=atoi(s.c_str());if (n > 23)cout << 1 << endl;elsecout << 0 << endl;return 0;}


可以发现,我输入了一个155,假如比较的是ASCII码那么它是小于23的输出应该是0,这里输出是1说明string成功地转换为了int类型。

0 0
原创粉丝点击