利用容器来拆分字符串
一个string str="xie si yuan" 如果想拆分这个字符串,就是中间有空格的话就拆分,也对vector容器和迭代器有一个稍微的了解
来看源代码
#include<iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;
vector<string> division_word(const string &str);
int main()
{
string str="hello liuan cert hshhss";
vector<string> display;
display=division_word(str); //容器display 保存分割后的字符串
//size_type 是保存容器大小的变量
for ( vector<string>::size_type i=0;i !=display.size();++i )
{
cout<<display.at(i)<<endl;
}
vector<string>::iterator iter=display.begin();//定义一个string 型的迭代器,指向display的首地址 注意迭代器的类型和容器的类型匹配,迭代器的实质是指针,但是比指针使用更加安全
for(;iter!=display.end();iter++)
{
cout<<(*iter)<<"/t"; //利用迭代器把容器遍历
}
cout<<endl;
cout<<"display.size()="<<display.size();
system("pause");
return 0;
}
vector<string> division_word(const string &str)
{
vector<string> temp; //临时容器
typedef string::size_type string_size; //string::size_type 是一个typtdef,其实就是size_t 用来保存其长度
string_size i=0;
while (i!=str.size())
{
//检测空白符,找到第一个不是空白符的字符
while(i !=str.size() && isspace(str[i])) //
++i;
string_size j=i;
//从i查找下一个空白符
while(j !=str.size() && !isspace(str[j]) )//isspace(int c) 判断c是否是一个空字符 空返回非零即 1 非空返回0
++j;
if (i!=j) //j最后是下一个非空字符位置
{
/*如果两者 [i,j)区域存在的话,
把从i索引开始的j-i个字符也就是单词复制到temp中
在继续查找
public String substring(int beginIndex, int endIndex)返回一个新字符串,它是此字符串的一个子字符串。
该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。 */
temp.push_back(str.substr(i,j-i)); //将该字符串压入vector
i=j;
}
}
return temp;
}
此外substring还有另外一种用法,public String substring(int beginIndex)返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 例如
"unhappy".substring(2) returns "happy"
isspace(int _c)参数是int型的,如果传入的是char型的,会利用ASCII码转换
vector是C++标准模板库的内容
它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
简单的使用方法如下:
vector<int> test;//建立一个vector
test.pushback(1);//把1和2压入vector 这样test[0]就是1,test[1]就是2
test.pushback(2);
在上面使用迭代器时候使用的str.end()返回的是迭代器的终止位置,并不是迭代器的大小,
转载于:https://blog.51cto.com/seanyxie/1376065
利用容器来拆分字符串相关推荐
- swift和OC - 拆分数组 和 拆分字符串
1. 拆分数组 /// 根据 数组 截取 指定个数返回 多个数组的集合func splitArray( array: [Date], withSubSize subSize: Int) -> [ ...
- [SqlServer]数据库中自定义拆分字符串函数Split()
经常我们要用到批量操作时都会用到字符串的拆分,郁闷的是SQL Server中却没有自带Split函数,所以我们只能自己动手来解决一下.为了减少和数据库的通讯次数,我们都会利用这种方法来实现批量操作. ...
- 利用MySQL存储过程分割字符串
2019独角兽企业重金招聘Python工程师标准>>> MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用. 现有一段字符串,如a ...
- 【Python入门教程】第81篇 常用字符串方法之拆分字符串
本篇将会介绍如何利用字符串对象的 split() 方法将一个字符串拆分成多个子串. 字符串 split() 方法 字符串的 split() 方法用于拆分字符串,返回一个由子串组成的列表.split() ...
- iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据
iOS开发:沙盒机制以及利用沙盒存储字符串.数组.字典等数据 1.初识沙盒:(1).存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的.要想数据永久保存,将数据保存成文件,存储到程 ...
- Java如何拆分字符串
假如现在有这样一串字符序列"沉默王二,一枚有趣的程序员",需要按照中文逗号","进行拆分,这意味着第一串字符序列为逗号前面的"沉默王二",第 ...
- 算法应用 ---拆分字符串为n节字符
package com.tw.str.util; import java.util.ArrayList; import java.util.Iterator; import java.util.Lis ...
- 如何在Bash中的分隔符上拆分字符串?
我将此字符串存储在变量中: IN="bla@some.com;john@home.com" 现在我想用拆分字符串; 分隔符,以便我有: ADDR1="bla@some.c ...
- SQLSERVER拆分字符串的函数(表值函数)
-- ============================================= -- Author: <over> -- Create date: < ...
最新文章
- 网络对抗技术-实验报告一
- python中类方法与实例方法的区别-Python实例方法、类方法、静态方法的区别与作用详解...
- 今天感觉有点冷了其实。
- 节省公司的宽带接入成本
- 中国水环境治理市场需求前景与十四五战略规划建议报告2022版
- 使用Linux lvm
- CRMEB v4目录结构说明
- JAVA虚拟机垃圾回收机制和JAVA排错三剑客
- 是时候重构下自己的博客了
- 由a标签的onclick影出来的问题
- python修改csv文件字段顺序_Pandas中DataFrame交换列顺序的方法实现
- [转载]备忘:oh my zsh 的安装、更新、删除
- 期刊第8期 | 分享C/C++嵌入式系统编程思想
- 详解无刷直流电机的工作原理
- php怎么联网,家庭宽带上网连接方式
- 该用哪些方式来提高自己的开发效率?
- 利用python在网上接单赚钱,兼职也能月入过万,还不赶紧学起来
- 使用中文维基百科语料库训练一个word2vec模型 12.1
- noip2012 文化之旅 (深搜,最优性剪枝)
- 什么是C语言的合法正确标识符?什么是C语言关键字?
热门文章
- 离线安装老版本android sdk,亲测,linux、windows、mac通用
- 笔记:Chrome 对浏览器的改进
- String(+) vs StringBuffer(append)
- Ubuntu 10.04 is coming
- 【刘文彬】 Controller:EOS区块链核心控制器
- 源码阅读:SDWebImage(五)——SDWebImageFrame
- 完美解决html中select的option不能隐藏的问题。
- 对象池common-pool2源码分析之对象状态
- Windows 10 之修改登录背景(Win10BGChanger)
- Linux 常用名利总结