关于实用的 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的更多相关文章

  1. stringstream的基本用法

    原帖地址:https://zhidao.baidu.com/question/580048330.htmlstringstream是字符串流.它将流与存储在内存中的string对象绑定起来.在多种数据 ...

  2. c++ stringstream(老好用了)

    前言: 以前没有接触过stringstream这个类的时候,常用的字符串和数字转换函数就是sscanf和sprintf函数.开始的时候就觉得这两个函数应经很叼了,但是毕竟是属于c的.c++中引入了流的 ...

  3. istringstream、ostringstream、stringstream 类简介

    本文系转载,原文链接:http://www.cnblogs.com/gamesky/archive/2013/01/09/2852356.html ,如有侵权,请联系我:534624117@qq.co ...

  4. 安利一个MVC的好东西,RazorGenerator.MsBuild,可以自动编译cshtml文件

    在传统的asp.net webForm 开发里,在发布时,如果选择预编译,就会自动将所有的aspx 文件编译,在发布后的目录里,就看不到aspx的源代码了,同时因为是预编译的,所以每个页面打开速度都挺 ...

  5. 【分享】学长的安利来了~~O(∩_∩)O

    前言:应栋哥要求,学长把演讲稿稍微整理下发布出来,这可以算是一篇安利文,也可以说是一篇经历文吧.作为一个确确实实从软工里收获到挺多东西的过来人,学长希望可以通过学长的经历来让你们对软工更加期待. 安利 ...

  6. stringstream操纵string小总结

    1 split字符串 之前在用C#写代码的时候,用过split函数,可以把一个字符串根据某个分隔符分成若干个字符串数组.在用C++操纵字符串的时候,我一直使用很笨的遍历的方法.为此,我问候过很多次C+ ...

  7. stringstream的用法【转】

    [本文来自]http://www.builder.com.cn/2003/0304/83250.shtmlhttp://www.cppblog.com/alantop/archive/2007/07/ ...

  8. C++ stringstream

    C++ 引入了ostringstream.istringstream.stringstream这三个类,这三个类包含在sstream.h头文件中.三个类中 1)istringstream类用于执行C+ ...

  9. 如何优雅的写一篇安利文-以Sugar ORM为例

    前言 我最近喜欢把写的十分优美的技术文章叫做安利文.首先,文章必须是原创而非软广:其次,阅读之后不仅能快速吸纳技术要点并入门开发,还能感同身受的体会作者热情洋溢的赞美和急于分享心得体验的心情,让人感觉 ...

随机推荐

  1. nodejs五子棋online游戏开发视频教程,客户端cocos creator js

    开发的游戏是五子棋online,网络版的,服务端部分和客户端部分都在这个教程里面,可以看一下目录! 服务器nodejs游戏开发教程 使用Nodejs开发网络服务器 游戏服务端 ,cocos creat ...

  2. 【Tomcat】本地域名访问配置

    原路径:localhost:8080/jsja 1.把8080端口改为80端口 打开%TOMCAT_HOME%/conf/server.xml <Connector connectionTime ...

  3. JVM 主动类和被动类的使用

    主动使用和被动使用Demo 1.创建工程一个Gradle工程 下一步 下一步 点击完成 2.创建类 public class MyTest1 { public static void main(Str ...

  4. Mysql中 查询慢的 Sql语句的记录查找

    Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...

  5. PHP使用MongoDB类操作MongoDB数据库总结

    参考:https://www.php.net/manual/zh/class.mongodb-driver-manager.php 参考:https://www.zhaokeli.com/articl ...

  6. VS2019及其他多个版本序列号和安装包

    Visual Studio2019序列号Visual Studio 2019 EnterpriseBF8Y8-GN2QH-T84XB-QVY3B-RC4DFVisual Studio 2019 Pro ...

  7. 方法不会等待Task执行完才返回数据

  8. 123457123456#0#-----com.tym.NaojingJiZhuanWan--前拼后广--脑筋急转弯

    com.tym.NaojingJiZhuanWan--前拼后广--脑筋急转弯

  9. 【计算机视觉】OpenCV篇(5) - 仿射变换与透视变换

    参考: 图像处理的仿射变换与透视变换(https://www.imooc.com/article/27535) http://ex2tron.wang/opencv-python-extra-warp ...

  10. LODOP带空格和不带空格的字体对齐

    有时候需要用到字体上下对齐,有些需要的文字较多,较少的文字需要加部分空格才能向上面的文字对齐.本文实际测试了一下字体对齐需要的空格.代码是在editplus里写的,该编辑软件里的字体首选项设置的是Co ...