C++中stringstream样例
包含头文件 #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样例的更多相关文章
- tensorflow学习笔记----tensorflow在windows的安装及TensorBoard中mnist样例
前言: ...
- Java 18 新增@snipppet标签,注释中写样例代码更舒适了!
在这次的Java 18中,新增了一个@snipppet标签,主要用于JavaDoc中需要放示例代码的场景.其实在Java 18之前,已经有一个@code标签,可以用于在JavaDoc中编写小段的代码内 ...
- Funambol Developer's Guide 中 connector development样例的问题
今天学习Funambol的connector开发,官方文档中的样例有问题. 首先,文档中提供的maven命令不可用: mvn archetype:generate -DarchetypeGroupId ...
- 构造Scala开发环境并创建ApiDemos演示样例项目
从2011年開始写Android ApiDemos 以来.Android的版本号也更新了非常多,眼下的版本号已经是4.04. ApiDemos中的样例也添加了不少,有必要更新Android ApiDe ...
- TensorFlow入门之MNIST样例代码分析
这几天想系统的学习一下TensorFlow,为之后的工作打下一些基础.看了下<TensorFlow:实战Google深度学习框架>这本书,目前个人觉得这本书还是对初学者挺友好的,作者站在初 ...
- 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例
第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...
- C++ Primer中文本查询演示样例Query的实现
近期在看C++ Primer复习C++的语法,看到书中15.9章中的文本查询演示样例时,认为设计得非常不错,于是便动手照着实现了一个,改动了非常久最终执行成功了,从中也学习到了非常多的语法.以下把实现 ...
- 【Scala篇】--Scala中Trait、模式匹配、样例类、Actor模型
一.前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 模式匹配机制相当于java中的switch-case. 使用了case关键字的类定义就是样例类(case ...
- Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子
转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...
随机推荐
- 【bzoj4305】数列的GCD 组合数学+容斥原理
题目描述 给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N). 现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], b[2], ..., ...
- php获取字符串的编码格式的方法(函数)
// 检测字符的编码格式 $encode = mb_detect_encoding($string, array('ASCII','UTF-8','GB2312','GBK','BIG5')); ec ...
- 【SPOJ】QTREE7(Link-Cut Tree)
[SPOJ]QTREE7(Link-Cut Tree) 题面 洛谷 Vjudge 题解 和QTREE6的本质是一样的:维护同色联通块 那么,QTREE6同理,对于两种颜色分别维护一棵\(LCT\) 每 ...
- 洛谷 P3312 [SDOI2014]数表 解题报告
P3312 [SDOI2014]数表 题目描述 有一张\(N*M\)的数表,其第\(i\)行第\(j\)列(\(1\le i \le n\),\(1 \le j \le m\))的数值为能同时整除\( ...
- [CEOI2004]锯木厂选址
link 试题分析 做这种题就应该去先写个暴力代码 #include<iostream> #include<cstring> #include<cstdio> #i ...
- Codeforces Round #336 (Div. 2)B 暴力 C dp D 区间dp
B. Hamming Distance Sum time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- POJ1011 木棒(dfs+剪枝)
问题重述: Description乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始 ...
- ICPC 2018 南京网络赛 J Magical Girl Haze(多层图最短路)
传送门:https://nanti.jisuanke.com/t/A1958 题意:n个点m条边的路,你有k次机会将某条路上的边权变为0,问你最短路径长度 题解:最短路变形,我们需要在常规的最短路上多 ...
- 对于redis框架的理解(三)
上一篇讲完了initServer的大体流程,其中aeCreateEventLoop(),这个函数 没有详细说明,我们在这一篇里讲述Ae.h和Ae.c, 这里面的api阐述了如何创建 eventLoop ...
- UVA-11582 数学
UVA-11582 题意: 求f[a^b]%n ,其中f是斐波那契数列,1<=n<=1000,0<=a,b<=2^64; 代码: //这题重点是要发现 f[i]%n会出现循环, ...