一个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

利用容器来拆分字符串相关推荐

  1. swift和OC - 拆分数组 和 拆分字符串

    1. 拆分数组 /// 根据 数组 截取 指定个数返回 多个数组的集合func splitArray( array: [Date], withSubSize subSize: Int) -> [ ...

  2. [SqlServer]数据库中自定义拆分字符串函数Split()

     经常我们要用到批量操作时都会用到字符串的拆分,郁闷的是SQL Server中却没有自带Split函数,所以我们只能自己动手来解决一下.为了减少和数据库的通讯次数,我们都会利用这种方法来实现批量操作. ...

  3. 利用MySQL存储过程分割字符串

    2019独角兽企业重金招聘Python工程师标准>>> MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用. 现有一段字符串,如a ...

  4. 【Python入门教程】第81篇 常用字符串方法之拆分字符串

    本篇将会介绍如何利用字符串对象的 split() 方法将一个字符串拆分成多个子串. 字符串 split() 方法 字符串的 split() 方法用于拆分字符串,返回一个由子串组成的列表.split() ...

  5. iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

    iOS开发:沙盒机制以及利用沙盒存储字符串.数组.字典等数据 1.初识沙盒:(1).存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的.要想数据永久保存,将数据保存成文件,存储到程 ...

  6. Java如何拆分字符串

    假如现在有这样一串字符序列"沉默王二,一枚有趣的程序员",需要按照中文逗号","进行拆分,这意味着第一串字符序列为逗号前面的"沉默王二",第 ...

  7. 算法应用 ---拆分字符串为n节字符

    package com.tw.str.util; import java.util.ArrayList; import java.util.Iterator; import java.util.Lis ...

  8. 如何在Bash中的分隔符上拆分字符串?

    我将此字符串存储在变量中: IN="bla@some.com;john@home.com" 现在我想用拆分字符串; 分隔符,以便我有: ADDR1="bla@some.c ...

  9. SQLSERVER拆分字符串的函数(表值函数)

    -- ============================================= -- Author:        <over> -- Create date: < ...

最新文章

  1. 网络对抗技术-实验报告一
  2. python中类方法与实例方法的区别-Python实例方法、类方法、静态方法的区别与作用详解...
  3. 今天感觉有点冷了其实。
  4. 节省公司的宽带接入成本
  5. 中国水环境治理市场需求前景与十四五战略规划建议报告2022版
  6. 使用Linux lvm
  7. CRMEB v4目录结构说明
  8. JAVA虚拟机垃圾回收机制和JAVA排错三剑客
  9. 是时候重构下自己的博客了
  10. 由a标签的onclick影出来的问题
  11. python修改csv文件字段顺序_Pandas中DataFrame交换列顺序的方法实现
  12. [转载]备忘:oh my zsh 的安装、更新、删除
  13. 期刊第8期 | 分享C/C++嵌入式系统编程思想
  14. 详解无刷直流电机的工作原理
  15. php怎么联网,家庭宽带上网连接方式
  16. 该用哪些方式来提高自己的开发效率?
  17. 利用python在网上接单赚钱,兼职也能月入过万,还不赶紧学起来
  18. 使用中文维基百科语料库训练一个word2vec模型 12.1
  19. noip2012 文化之旅 (深搜,最优性剪枝)
  20. 什么是C语言的合法正确标识符?什么是C语言关键字?

热门文章

  1. 离线安装老版本android sdk,亲测,linux、windows、mac通用
  2. 笔记:Chrome 对浏览器的改进
  3. String(+) vs StringBuffer(append)
  4. Ubuntu 10.04 is coming
  5. 【刘文彬】 Controller:EOS区块链核心控制器
  6. 源码阅读:SDWebImage(五)——SDWebImageFrame
  7. 完美解决html中select的option不能隐藏的问题。
  8. 对象池common-pool2源码分析之对象状态
  9. Windows 10 之修改登录背景(Win10BGChanger)
  10. Linux 常用名利总结