C++中STL之stringstream的使用总结

编程入门 行业动态 更新时间:2024-10-23 11:31:59

C++中<a href=https://www.elefans.com/category/jswz/34/1762239.html style=STL之stringstream的使用总结"/>

C++中STL之stringstream的使用总结

写在前面:之前一直都很习惯使用中的格式转换,但是很不方便,做题的时候用起来很容易出错,今天系统总结一下c++中的用法

  • 首先来认识一下std::basic_stringstream
    类模板 std::basic_stringstream 实现基于字符串的流上的输入与输出操作。它等效地存储一个 std::basic_string 的实例,并在其上进行输入与输出操作。定义域头文件
    在底层,该类实际上包装 std::basic_stringbuf 的未处理字符串设备到 std::basic_iostream 的高层接口中。提供到独有 std::basic_stringbuf 成员的完整接口。
  • 库中声明的标准类是自动选择所必需的转换。而且, 转换结果保存在stringstream对象的内部缓冲中。不必担心缓冲区溢出,因为这些对象会根据需要自动分配存储空间。
  • 库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另 外,每个类都有一个对应的宽字符集版本。简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。
    注意,使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。
  • 重复利用stringstream对象中需要注意的,如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法;在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。
  • 接下来是测试用例,包括string和int之间的转换以及算法中经常用到的如何将一个包含空格的string以空格为间隔分别输出。
#include <iostream>
#include <cstdio>
#include <sstream>
#include <string>
#include <typeinfo>  //输出类型
using namespace std;
int main()
{string s="1000";int a=0;stringstream ss;//string 到int的转换 ss<<s;ss>>a;cout<<a<<" a的类型是"<<typeid(a).name()<<endl;ss.clear();  //清除ss中的内容以便再次使用//int 到string的转换 int b=2000;string s1;ss<<b;ss>>s1;cout<<b<<" b的类型是"<<typeid(b).name()<<endl;ss.clear();string s2="你好啊 我是 哈哈";string buf;ss<<s2;while (ss>>buf) cout<<buf<<endl; return 0;
} 

更多推荐

C++中STL之stringstream的使用总结

本文发布于:2023-07-28 15:48:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1240131.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:STL   stringstream

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!