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 
#include 
#include 
#include 
#include   //输出类型
using namespace std;
int main()
{
	string s="1000";
	int a=0;
	stringstream ss;
	//string 到int的转换 
	ss<>a;
	cout<>s1;
	cout<>buf) cout<

C++中STL之stringstream的使用总结_第1张图片

你可能感兴趣的:(C++学习笔记)