C++中字符串的分割
来源:互联网 发布:php直销源码 编辑:程序博客网 时间:2024/05/29 17:11
java中的字符串分割太强大了,最近发现原来C++中也能实现。
首先来看一个leetcode上的题
[LeetCode] Simplify Path 简化路径
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”
click to show corner cases.
Corner Cases:
Did you consider the case where path = “/../”?
In this case, you should return “/”.
Another corner case is the path might contain multiple slashes ‘/’ together, such as “/home//foo/”.
In this case, you should ignore redundant slashes and return “/home/foo”.
这个题解了其是就是字符串分割,分割线是“/”,然后将分割好的字符串放到stack栈里面,当碰到“.”了就保留不变,当碰到”..”的时候,就pop出上一次存的字符串。用sstream快的不行
代码实现
public class Solution { public String simplifyPath(String path) { Stack<String> s = new Stack<>(); String[] p = path.split("/"); for (String t : p) { if (!s.isEmpty() && t.equals("..")) { s.pop(); } else if (!t.equals(".") && !t.equals("") && !t.equals("..")) { s.push(t); } } List<String> list = new ArrayList(s); return "/" + String.join("/", list); }}
原题解来自http://www.cnblogs.com/grandyang/p/4347125.html
下面再看下它的简单使用
#include <sstream>#include <string>#include <iostream>using namespace std;int main(){ string text="I'm a monster"; stringstream ss(text); string sub_str; while(getline(ss,sub_str,' ')) cout<<sub_str<<endl; return 0;}
从代码中从简单就学会分割了。对于一般的没有要求特定方式的即以空格做为分割,如下面
#include <sstream>#include <string>#include <iostream>using namespace std;int main(){ string text="I'm a monster"; stringstream ss(text); while(ss>>text) cout<<text.c_str()<<endl; return 0;}
那么我们可以细挖一下:
库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。除了我觉得最强大的分割功能为,还有就是数据类型转化,如下
string到int的转换string result=”10000”;int n=0;stream<<result;stream>>n;//n等于10000
这其中最强大的莫过于to_string()函数了
如int、long、double等等转换成字符串,要使用以一个string类型和一个任意值t为参数的to_string()函数。to_string()函数将t转换为字符串并写入result中。使用str()成员函数来获取流内部缓冲的一份拷贝:
整个函数原型跟上面很像
template<class T>void to_string(string & result,const T& t){ ostringstream oss;//创建一个流oss<<t;//把值传递如流中result=oss.str();//获取转换后的字符转并将其写入result}
to_string(s1,10.5);//double到string
to_string(s2,123);//int到string
to_string(s3,true);//bool到string
当然了还有convert函数,但感觉没鸟用了。
节选自 http://wuyani.blog.163.com/blog/static/19207521920118232577206/
- 标准C中字符串分割的方法
- c/cpp中如何分割字符串,类似于split的功能
- c语言的字符串分割
- C语言的字符串分割
- C语言字符串的分割
- C语言字符串的分割
- C strtok C中字符串分割
- VC中,字符串的分割
- C++ 中字符串的分割
- C++中字符串的分割
- C++中字符串的分割
- C语言中利用strtok分割字符串
- 标准C中strtok函数分割字符串
- 标准C中strtok函数分割字符串
- 标准C中字符串分割方法
- c中字符串分割函数strtok
- c 以及 c++中字符串分割
- 标准C中字符串分割方法
- HDU 1010 Tempter of the Bone
- ASP.NET AspNetPager居中样式
- 发送请求的参数值中含有类型为textarea的input框的值且当输入有回车换行时,md5加密生成sign验证失败,
- linux 、unix下启动停止oracle服务和监听
- linux下tftp安装
- C++中字符串的分割
- Softmax 一文看懂Softmax函数
- javaEE项目中WEB-INF目录
- ssm项目下遇到的404问题
- 345. Reverse Vowels of a String
- 9.25学习报告
- 【学习记录】链表的插入
- [NOI2015]寿司晚宴(状态压缩动态规划)
- HTML结构杂记