安利一下stringstream
关于实用的 stringstream
处理毒瘤输入数据
比如这个题
在输入的时候有很多问题,如果用scanf输入char型字符串,那么不好用map判断,并且读入整行判断换行会很麻烦
如果选择用string型数组处理数据,除了用getline,不然很难判断换行
然而stringstream可以完美的解决这个问题
//这是上面介绍的第一个用法 ,PS: 输出放下面了(雾
//解释一下——
//stringstream是一个输入输出流,它可以模拟cin和cout的操作
//你可以在流里面存东西,也可以从里面把东西拿出来
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
stringstream ss;
string a;
string b = "China";
string c;
string d;
string e;
//"----------下面是stringstream的各种操作-----------"
// 1.存入
ss << b;//给 ss 流传东西
ss >> a;//把 ss 流的东西传出去
cout << "a: " << a << endl;
ss >> c;
cout << "c: " << c << endl;//会发现c没有输出任何东西,因为 ss 流里面的字符串已经传给 a 了
//另外的存入方法
ss.clear();//用完必须清理一下
ss.str("heanda");//括号里面也可以是string型变量
ss >> d;
cout<< "d: " << d << endl;
ss.clear();
//接下来就看看stringstream存入输出的用法
ss.str("had is chinese");
while(ss >> e) cout << "e: " << e << endl;//它会把空格作为一个断点,一个一个传出去,所以可以一个一个取
return 0;
/*
输出:
a: China
c:
d: heanda
e: had
e: is
e: chinese
*/
}
很方便的类型转换
除了处理毒瘤数据,它还可以进行一些类型转换
1.数字型 ——> string字符串
2.string字符 ——> 数字型
#include <iostream>
#include <cstdio>
#include <sstream>
using namespace std;
int main()
{
double a = 1.00;
float b = 3.141592;
int c;
stringstream ss;
//1.将string丢给成int
string s = "1234";
ss.str(s);
ss >> c;
cout << "string->int: " << c << endl;
ss.clear();
ss.str("");
//2.将小数丢给stringstream
ss << a;
string s2;
ss >> c;
cout << "double -> int: " << c << endl;
ss.clear();
ss.str("");
//3.将小数丢给小数
ss.setf(ios::fixed);
ss.precision(2);
ss << b;
double number;
ss >> number;
cout << "string->double 并且控制小数位数: " << number << endl;
ss.clear();
ss.str("");
//4.数字->字符串
int num = 2003;
ss << num;
string num_s;
ss >> num_s;
cout << "int -> string: " << num_s << endl;
/*// 输出在这
string->int: 1234
double -> int: 1
string->double 并且控制小数位数: 3.14
int -> string: 2003
*/
return 0;
}
安利一下stringstream的更多相关文章
- stringstream的基本用法
原帖地址:https://zhidao.baidu.com/question/580048330.htmlstringstream是字符串流.它将流与存储在内存中的string对象绑定起来.在多种数据 ...
- c++ stringstream(老好用了)
前言: 以前没有接触过stringstream这个类的时候,常用的字符串和数字转换函数就是sscanf和sprintf函数.开始的时候就觉得这两个函数应经很叼了,但是毕竟是属于c的.c++中引入了流的 ...
- istringstream、ostringstream、stringstream 类简介
本文系转载,原文链接:http://www.cnblogs.com/gamesky/archive/2013/01/09/2852356.html ,如有侵权,请联系我:534624117@qq.co ...
- 安利一个MVC的好东西,RazorGenerator.MsBuild,可以自动编译cshtml文件
在传统的asp.net webForm 开发里,在发布时,如果选择预编译,就会自动将所有的aspx 文件编译,在发布后的目录里,就看不到aspx的源代码了,同时因为是预编译的,所以每个页面打开速度都挺 ...
- 【分享】学长的安利来了~~O(∩_∩)O
前言:应栋哥要求,学长把演讲稿稍微整理下发布出来,这可以算是一篇安利文,也可以说是一篇经历文吧.作为一个确确实实从软工里收获到挺多东西的过来人,学长希望可以通过学长的经历来让你们对软工更加期待. 安利 ...
- stringstream操纵string小总结
1 split字符串 之前在用C#写代码的时候,用过split函数,可以把一个字符串根据某个分隔符分成若干个字符串数组.在用C++操纵字符串的时候,我一直使用很笨的遍历的方法.为此,我问候过很多次C+ ...
- stringstream的用法【转】
[本文来自]http://www.builder.com.cn/2003/0304/83250.shtmlhttp://www.cppblog.com/alantop/archive/2007/07/ ...
- C++ stringstream
C++ 引入了ostringstream.istringstream.stringstream这三个类,这三个类包含在sstream.h头文件中.三个类中 1)istringstream类用于执行C+ ...
- 如何优雅的写一篇安利文-以Sugar ORM为例
前言 我最近喜欢把写的十分优美的技术文章叫做安利文.首先,文章必须是原创而非软广:其次,阅读之后不仅能快速吸纳技术要点并入门开发,还能感同身受的体会作者热情洋溢的赞美和急于分享心得体验的心情,让人感觉 ...
随机推荐
- JS数组常见方法的深浅拷贝分类
一.涉及浅拷贝类方法,会改变原数组 1,pop(): 删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不 改变数组,并返 ...
- 用google translate大文件
问题: google translate对于大文件不支持,咋办? 思路:自己写个函数把的文件拆成小文件,再用google translate! code: from googletrans impor ...
- docker配置远程管理端口
date: 2019-07-19 17:30:01 author: headsen chen notice :个人原创 Ubuntu18用这篇文章 ubuntu 16用另外一篇文章 ubuntu 1 ...
- vs 设置护眼背景颜色
工具 —> 选项 —> 环境 —> 字体和颜色 —> 纯文本(显示项中) —> 项目背景 —> 自定义—> 色调位85.饱和度123.亮度205,保存即可.测 ...
- 【转】Python读取PDF文档,输出内容
Python3读取pdf文档,输出内容(txt) from urllib.request import urlopen from pdfminer.pdfinterp import PDFResour ...
- 【转载】 卷积神经网络(Convolutional Neural Network,CNN)
作者:wuliytTaotao 出处:https://www.cnblogs.com/wuliytTaotao/ 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎 ...
- django ORM 自定义字段
class FixedCharField(models.Field): """ 自定义的char类型的字段类 """ def __init_ ...
- ES6深入浅出-3 三个点运算 & 新版字符串-2. 新版字符串
这是以前的字符串..双引号,单引号.毫无区别 有时候在字符串里面写一些标签. 排版不好看 我就想回车一下.这样写虽然是好看.但是语法就报错了.es5的字符串不支持换行.我只想是想让它排版的好看一点. ...
- bat函数调用 带返回值
bat 脚本之 使用函数 摘自:https://blog.csdn.net/peng_cao/article/details/73999076 综述 bat函数写法 bat函数调用 bat函数返回值 ...
- 【VS开发】ClientToScreen 和ScreenToClient 用法
ClientToScreen( )是把窗口坐标转换为屏幕坐标 pWnd->GetWindowRect(&rc);是获取整个窗体的大小pWnd->GetClientRect(& ...