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短语以及 ...
随机推荐
- Django 2.0 学习(17):Django 用户认证(auth模块)
Django 用户认证(auth模块) 一.认证登陆 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中:如果用户存在于数据库中,然后再验证用户输入 ...
- MariaDB插入中文出现???情况
本来打算创建一个测试表进行一个简单的实验,发现创建完python_test表后插入数据后,select发现所有中文都变成问号了,这一看就是出现了乱码 MariaDB [lhc]> create ...
- Ubuntu18.04 创建与编辑热点的方法
在终端输入 nm-connection-editor 修改Hotspot,里边有热点名称及密码 当修改完了这些,要关闭热点,重新打开,这样才会生效!
- static变量的特点 - 只会有一份成员对象
1. public class HasStatic{ 2. private static int x=100; 3. public static void main(String ...
- [BZOJ3166][Heoi2013]Alo 可持久化Trie树
3166: [Heoi2013]Alo Time Limit: 20 Sec Memory Limit: 256 MB DescriptionWelcome to ALO ( Arithmetic a ...
- EVE-NG FAQ
EVE-NG FAQ How to install EVE on bare box using Ubuntuoriginal ISO distro. Get Ubuntu ISO: https://w ...
- RHEL 7中有关终端的快捷方式
快速启动终端 网上有不错的教程,只是有时候和版本有一定的出入,这里涉及小白博主自行摸索的过程(RHEL 7.4). 1.点击桌面右上角,选择设置(小扳手) 2.选择键盘(Keyboard) 3.将进度 ...
- python基础----__setitem__,__getitem,__delitem__
class Foo: def __init__(self,name): self.name=name def __getitem__(self, item): print(self.__dict__[ ...
- c++常量详解
概念 常量是存放固定且不可变值的,一旦确定初始值则在程序其它地方不可改变, 所以const对象必须初始化.常量一般使用const关键字来修饰. const 对象可以大致分为三类: 1. const i ...
- UESTC--1730
原题链接:http://acm.uestc.edu.cn/problem.php?pid=1730 分析:线段树单点更新,区间求和. #include<iostream> #include ...