C++知识碎片整理(4)——string,int互转
来源:互联网 发布:光碟刻录软件 编辑:程序博客网 时间:2024/05/16 15:40
C++知识碎片整理(4)——string转int
2016/8/16
string和int类型数据的互转是经常使用到的功能,自然有很多的方法。
今天只记录我相对喜欢的一个string转int方法,其他方法在下方博文中有介绍
http://www.cnblogs.com/nzbbody/p/3504199.html
示例程序
#include <iostream>#include <sstream>using namespace std;int string2int(string s){ int num; stringstream stream; stream << s; stream>>num; return num;};int main(){ string a = "100"; string b = "200"; int num1 = string2int(a); int num2 = string2int(b); cout << num1 << "\t"<<num2<<endl; getchar(); return 0;}
说明
核心是stringstream的使用,stringstream是在库中定义的一种类,因此要首先引用这个库。库还定义了其他两个istringstream,ostringstream,顾名思义就是分别进行输入流,输出流和输入输出流操作的类。简单起见,直接使用stringstream(至于其他两类的存在意义,可以以后深究)。
<<和>>是stringstream输入输出的操作符,需要注意输入和赋值是不同的。因此如果你要重复使用stringstream,你要在每一次重用前clear()一下。以下例来说明这个问题
#include <iostream>#include <sstream>using namespace std;int main(){ string a = "100"; string b = "200"; cout << "a" << a << endl; cout << "b" << b << endl; stringstream ss; int num1, num2; ss << a; ss >> num1; cout << num1 << endl; ss.clear(); ss << b; ss >> num2; cout << num2 << endl; getchar(); return 0;}
通过上例,使用stringstream进行两次string到int的转换,因为中间使用了clear()方法,程序正确执行,但如果把clear()注释掉,在输出第二个数时就会发现出现了错误,这是因为ss里的数据没有清空就继续输入了字符串“b”的数据,出现错误,由此可见<<操作和赋值的不同。
因此,在我实际使用过程中,我习惯于像最上方示例代码中将string2int写成一个函数,甚至专门设计自己熟悉的数据类型转化方法类库,这样可以方便自己的学习和开发,提高效率和程序正确率。
2016/9/18更新
同理:int转string示例:
int aa = 30; stringstream ss; ss<<aa; string s1 = ss.str(); cout<<s1<<endl; // 30 string s2; ss>>s2; cout<<s2<<endl; // 30
形成函数
string—->int
int string2int(string s){ int num; stringstream stream; stream << s; stream >> num; return num;}
int—–>string
string int2string(int n){ stringstream ss; ss<<n; string str = ss.str(); return str;}
更多
关于stringstream的用法,更多可以看:
http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.html
关于sstream类库所涉及到的C++标准库的知识:
http://blog.163.com/hbu_lijian/blog/static/126129153201201710456994/
2017/2/3批注:
依然是文件输入输出流的内容,时至今日,我已经把这部分知识忘记的差不多了,标记一下,回头温习一下Java输入输出流。
补充一下这个问题的Java实现,Java实现非常简单,只需要调用包装类的valueOf方法即可
package com.way.algorithm;/** * Test the Java implementation to transform a String to an int and * in reverse transform an int to a String * @author reus * */public class TypeExchange { public static void main(String[] args){ String str1="1234"; int x=Integer.valueOf(str1); System.out.println(x); String str2=String.valueOf(x); System.out.println(str2); }}
结果
12341234
- C++知识碎片整理(4)——string,int互转
- Java知识碎片整理(4)——抽象类
- C++知识碎片整理(8)——生成随机数
- C++知识碎片整理(9)——Vector&List
- Java知识碎片整理(1)——数组相关
- Java知识碎片整理(2)——异常处理
- C++知识碎片整理(12)——typedef关键字
- C++知识碎片整理(13)——extern
- C++知识碎片整理(7)——inline(内联)函数
- C++知识碎片整理(1)——数组作为函数输出值
- C++知识碎片整理(2)——字符串大小写转换
- C++知识碎片整理(3)——输出数据到txt
- C++知识碎片整理(5)——个人文件工具类
- C++知识碎片整理(11)——自用数学函数
- Java知识碎片整理(5)——static关键字与单例设计模式
- 知识碎片之整理
- CSS碎片知识整理
- C语言知识碎片
- ubuntu 14中在终端访问中设置文件夹显示和终端颜色
- android view手势冲突的通用解决方法
- SIFT-GPU关于SaveSIFT函数的改进
- Jmeter的正则表达式未正确提取数据
- HDU 1233 还是畅通工程
- C++知识碎片整理(4)——string,int互转
- POJ1176-Party Lamps
- 浅析Java中的final关键字
- JMeter正则表达式提取器-文章1
- 也纳人才教你Vue.js60分钟快速入门!
- magento 1.8.1更换前台主题
- M层
- 连续子序列最大和
- 小猫统计:进行数据审核,找出错误数据