包含头文件 #include <sstream>

初始化可以使用 clear()、 str( ) 赋值;

这里的clear方法,实际上是清空stringstream的状态(比如出错等),清空内容需要使用.str("")方法

直接调用str()方法可以返回 returns a string object with a copy of the current contents of the stream.

可以使用<<输入和>>输出

string s;
stringstream ss;
int a, b, c;
getline(cin, s);
ss.clear();
ss.str(s);
ss >> a >> b >> c; //这里默认空格直接会分词,而且即使abc的类型不同还是可以的,相当于灵活类型转换
string s;
stringstream ss;
int n, i, sum, a;
cin >> n;
getline(cin, s); // 读取换行符
for (i=0; i<n; i++)
{
getline(cin, s);
ss.clear();
ss.str(s);
sum=0;
while (1)
{
ss >> a;
if ( ss.fail() ) break; //fail()判断是否到底
sum+=a;
}
cout << sum << endl;
}

  

    //stringstream用于split很方便
string a, b, c, d;
string lines="adfa;asdfasd;fasdf;ccc";
stringstream line(lines); //可以直接初始化
getline(line, a, 'f');
getline(line, b, ';');
getline(line, c, ';');
getline(line, d); //与不同的getline搭配
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
cout<<"d = "<<d<<endl;

  还有个问题:这里默认的分词都是空格,那么如果是其他的比如逗号怎么做

可以用如下代码:

#include <iostream>
#include <stdlib.h>
#include <sstream>
#include <cstring> //使用到c_str(),strtok函数 using namespace std;
int main() {
string my_string;
while(getline(cin, my_string, '\n')) {
char *pch;
cout << my_string << endl;
char str[128];
//c_str()返回的是一个临时指针,不能直接复制
strcpy(str, my_string.c_str());
//char* str;
//str=const_cast<char*>(my_string.c_str()); 也可以直接使用char* c_str()返回的是常量的指针,所以作了const_cast转换
cout << str << endl;
pch = strtok(str, " -,."); // 空格,'-',',','.'都是分隔符 ,其实也是把这个分隔符替换为空格
while(pch != NULL) {
cout << pch << endl;
pch = strtok(NULL, " -,."); // 注意这里是NULL
}
}
return 0;
}

  函数strtok的格式:char* strtok (char* str,constchar* delimiters );

------------------------------------------------------------

华为机试1:
字符串最后一个单词的长度

#include <iostream>
#include <cstring>
#include <sstream>
using namespace std; int main(){
string str,res;
getline(cin,str); //只能使用getline函数来读入直到换行符
if(str.length()>5000) return 0;
stringstream s;
s.clear();
s.str(str);
while(1){
s>>res;
if(s.fail()) break;
}
cout<<res.length();
return 0;
}

 华为机试题2:简单错误记录

string getfilename(string file){
int pos;
pos=file.rfind('\\');
file=file.substr(pos+1,file.length()-pos); //使用rfind和substr函数获取
if(file.length()>16)
file=file.substr(file.length()-16,16); //pos是从0开始的
return file;
}

  使用了string的rfind函数,find从前往后找,rfind从后往前,如果没找到会返回string::npos

C++中stringstream样例的更多相关文章

  1. tensorflow学习笔记----tensorflow在windows的安装及TensorBoard中mnist样例

    前言:                                                                                                 ...

  2. Java 18 新增@snipppet标签,注释中写样例代码更舒适了!

    在这次的Java 18中,新增了一个@snipppet标签,主要用于JavaDoc中需要放示例代码的场景.其实在Java 18之前,已经有一个@code标签,可以用于在JavaDoc中编写小段的代码内 ...

  3. Funambol Developer&#39;s Guide 中 connector development样例的问题

    今天学习Funambol的connector开发,官方文档中的样例有问题. 首先,文档中提供的maven命令不可用: mvn archetype:generate -DarchetypeGroupId ...

  4. 构造Scala开发环境并创建ApiDemos演示样例项目

    从2011年開始写Android ApiDemos 以来.Android的版本号也更新了非常多,眼下的版本号已经是4.04. ApiDemos中的样例也添加了不少,有必要更新Android ApiDe ...

  5. TensorFlow入门之MNIST样例代码分析

    这几天想系统的学习一下TensorFlow,为之后的工作打下一些基础.看了下<TensorFlow:实战Google深度学习框架>这本书,目前个人觉得这本书还是对初学者挺友好的,作者站在初 ...

  6. 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例

    第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...

  7. C++ Primer中文本查询演示样例Query的实现

    近期在看C++ Primer复习C++的语法,看到书中15.9章中的文本查询演示样例时,认为设计得非常不错,于是便动手照着实现了一个,改动了非常久最终执行成功了,从中也学习到了非常多的语法.以下把实现 ...

  8. 【Scala篇】--Scala中Trait、模式匹配、样例类、Actor模型

    一.前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 模式匹配机制相当于java中的switch-case. 使用了case关键字的类定义就是样例类(case ...

  9. Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

    转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...

随机推荐

  1. bzoj2699 更新

    题意 对于一个数列A[1..N],一种寻找最大值的方法是:依次枚举A[2]到A[N],如果A[i]比当前的A[1]值要大,那么就令A[1]=A[i],最后A[1]为所求最大值.假设所有数都在范围[1, ...

  2. 原子性、内存可见性和重排序——重新认识synchronized和volatile

    一.原子性 原子性操作指相应的操作是单一不可分割的操作.例如,对int变量count执行count++d操作就不是原子性操作.因为count++实际上可以分解为3个操作:(1)读取变量count的当前 ...

  3. VS的IISExpress配置通过IP访问程序

    打开C:\Users\用户\Documents\IISExpress\config\applicationhost.config 获取本地VS项目运行起来的端口,比如 然后在文本里搜索  24395 ...

  4. 【刷题】BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡

    Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...

  5. 【NOIP2017】列队(Splay)

    [NOIP2017]列队(Splay) 题面 洛谷 题解 其实好简单啊... 对于每一行维护一棵\(Splay\) 对于最后一列维护一棵\(Splay\) \(Splay\)上一个节点表示一段区间 每 ...

  6. unity3d点击屏幕选中物体

    原文  http://blog.csdn.net/mycwq/article/details/19906335 前些天接触unity3d,想实现点击屏幕选中物体的功能.后来研究了下,实现原理就是检测从 ...

  7. 最长上升子序列nlogn算法

    LIS问题是经典的动态规划问题,它的状态转移相信大家都很熟悉: f[i] = f[k] + 1  (k < i 且 A[k] < A[i]) 显然这样做复杂度是O(n^2) 有没有更快的算 ...

  8. Codeforces 906B. Seating of Students(构造+DFS)

    行和列>4的可以直接构造,只要交叉着放就好了,比如1 3 5 2 4和2 4 1 3 5,每一行和下一行用不同的方法就能保证没有邻居. 其他的可以用爆搜,每次暴力和后面的一个编号交换并判断可行性 ...

  9. c++常量详解

    概念 常量是存放固定且不可变值的,一旦确定初始值则在程序其它地方不可改变, 所以const对象必须初始化.常量一般使用const关键字来修饰. const 对象可以大致分为三类: 1. const i ...

  10. 树莓派安装python3.5

    https://gist.github.com/BMeu/af107b1f3d7cf1a2507c9c6429367a3b Installing Python 3.5 on Raspbian As o ...