首页 > 编程语言 >C++标准库字符串流sstream

C++标准库字符串流sstream

时间:2022-10-26 22:45:09浏览次数:83  
标签:string istringstream str2 sstream ostringstream C++ stringstream 字符串

sstream与strstream

在C++有两种字符串流,一种在<strstream>中定义,另一种在<sstream>中定义,两者的区别如下:

  • strstream里包含strstreambuf、istrstream、ostrstream、strstream,是基于C类型字符串char*编写的,如ostrstream::str()返回的是char*类型的字符串
  • sstream里包含stringbuf、istringstream、ostringstream、stringstream,是基于std::string编写的,如ostringstream::str()返回的是std::string类型的字符串

<strstream>中的类已经不推荐使用(deprecated in C++98)任何时候都应当使用<sstream>而不是<strstream>。

ostringstream

ostringstream用来进行格式化的输出,可以将各种类型转换为string类型,只支持 << 操作符

//这个字符串流只能使用 << 操作符
ostringstream ostrs;   
ostrs << 3.14 << " ";
ostrs << "ab" << ",";
cout << ostrs.str();    
//输出 3.14 ab,

istringstream

istringstream用于把字符串中以空格隔开的内容提取出来,只支持 >> 操作符

string str1,str2;
string instr = "1 2 3 4 5 6 7";
// 通过构造函数赋值
istringstream iss(instr);	
while (iss >> str1 >> str2)
{
	cout << str1 << " " << str2 << endl;
}
//输出
//1 2
//3 4
//5 6

stringstream

stringstream是ostringstream和istringstream的综合,支持 < 和 >> 操作

int num; string str1,str2;
string input = "1 2 3 4 5 6 7";
stringstream ss;
ss << input;
while (ss >> num >> str1 >> str2) 
{
    cout << num << " " << str1 << " " << str2 << endl;
}
//输出
//1 2 3
//4 5 6

//用str()转换成string类型才能输出
cout << ss.str() << endl;

//字符串清空
ss.str("");

标签:string,istringstream,str2,sstream,ostringstream,C++,stringstream,字符串
From: https://www.cnblogs.com/timefiles/p/16826887.html

相关文章

  • c语言—字符函数和字符串函数进阶篇—笔记
    这章介绍了一些字符函数,需要记忆和练习,才能掌握。具体函数可以翻阅c语言函数库​​https://zh.cppreference.com/w​​C语言中对字符和字符串的处理很是频繁,但是C语言本身是......
  • C++性能优化指南 电子书 pdf
    作者:KurtGuntheroth出版社:人民邮电出版社原作名:OptimizedC++:ProvenTechniquesforHeightenedPerformance译者:杨文轩 链接:C++性能优化指南  本书......
  • c++ template
    template<typenameT,typenameM>//基本的模板函数和模板类voidtestfunc(Ta,Mb){std::cout<<a<<b<<std::endl;}template<typenameT,typenameN>c......
  • C++模板元编程实战 电子书 pdf
    作者:李伟出版社:人民邮电出版社副标题:一个深度学习框架的初步实现 链接:C++模板元编程实战  《C++模板元编程实战:一个深度学习框架的初步实现》以一个深度学......
  • 关于常量与字符串常量存储方式的一点看法
    首先,毫无疑问,即使是常量(字符串常量)也是要占据空间的。 一般来说,基本类型(整型、字符型等)常量会在编译阶段被编译成立即数,占的是代码段的内存。(代码段是只读的,而且不允程......
  • 利用栈求递增子字符串长度
    901. OnlineStockSpanMedium24552FavoriteShareWriteaclass ​​StockSpanner​​ whichcollectsdailypricequotesforsomestock,andreturnsthe span of......
  • 连续子数组的最大和+如何处理以字符为分隔符的字符串
    题目描述一个非空整数数组,选择其中的两个位置,使得两个位置之间的数和最大。如果最大的和为正数,则输出这个数;如果最大的和为负数或0,则输出0输入描述:3,-5,7,-2,8输出描述:......
  • 一个字符串用空格作为分隔符,可以用while(cin>>Input)进行输入
    题目描述给定一个句子(只包含字母和空格),将句子中的单词位置反转,单词用空格分割,单词之间只有一个空格,前后没有空格。比如:(1)“helloxiaomi”->“mixiaohello”输入描......
  • c++当中的引用
    引用在c++中,我们有一种比传递指针更加高效的方式,那就是引用(Reference)。引用类似于windows环境下的快捷方式,通过快捷方式和可执行程序本身都可以运行程序。引用的定义方......
  • 字符串--移除k个数使得剩下的数最大
    有一十进制正整数,移除其中的K个数,使剩下的数字是所有可能中最大的。假设:字符串的长度一定大于等于K字符串不会以0开头 输入描述:一行由正整数组成的数字字符串,和......