包含头文件 #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. mysql权限管理,用户管理

    1 创建用户 mysql> truncate table user; //先删除所有用户 mysql> CREATE USER  'paris'@'localhost' IDENTIFIE ...

  2. spark streaming (一)

    实时计算介绍 Spark Streaming, 其实就是一种Spark提供的, 对于大数据, 进行实时计算的一种框架. 它的底层, 其实, 也是基于我们之前讲解的Spark Core的. 基本的计算模 ...

  3. JSTL与EL与OGNL

    springMVC使用JSTL与EL表达式: spring MV默认的jsp页面的标签就是JSTL,而struts2默认的是OGNL标签. struts2 使用OGNL与EL表达式:OGNL用stru ...

  4. discuz开发,登录次数过多,锁定解决方法

    到数据库里的表找到pre_common_failedlogin 和pre_ucenter_failedlogins清空里面的内容即可. truncate table pre_common_failed ...

  5. 用shell获取目录/文件夹/文件的时间戳

    命令: date +%s -r 目录名/文件名 输出内容形如: 1276225332

  6. 维护前面的position+主席树 Codeforces Round #406 (Div. 2) E

    http://codeforces.com/contest/787/problem/E 题目大意:给你n块,每个块都有一个颜色,定义一个k,表示在区间[l,r]中最多有k中不同的颜色.另k=1,2,3 ...

  7. 2015/9/22 Python基础(18):组合、派生和继承

    一个类被定义后,目标就是把它当成一个模块来使用,并把这些对象嵌入到你的代码中去,同其他数据类型及逻辑执行流混合使用.有两种方法可以在你的代码中利用类.第一种是组合,就是让不同的类混合并加入到其他类中, ...

  8. File System Implementation 文件系统设计实现

    先来扯淡吧,上一篇文章说到要补习的第二篇文章介绍文件系统的,现在就来写吧.其实这些技术都已经是很久以前的了,但是不管怎么样,是基础,慢慢来学习吧.有种直接上Spark源码的冲动.. 1. 这篇博客具体 ...

  9. [linux]安装code::blocks

    1.安装基本编译环境 $sudo apt-get install build-essential $sudo apt-get install gdb 2.安装codeblock $sudo apt-g ...

  10. R1(上)—R关联规则分析之Arules包详解

    Arules包详解 包基本信息 发布日期:2014-12-07 题目:挖掘关联规则和频繁项集 描述:提供了一个表达.处理.分析事务数据和模式(频繁项集合关联规则)的基本框架. URL:http://R ...