C++ Split string into vector<string> by space
在C++中,我们有时候需要拆分字符串,比如字符串string str = "dog cat cat dog"想以空格区分拆成四个单词,Java中实在太方便了,直接String[] v = str.split(" ");就搞定了,而c++中没有这么方便的实现,但也有很多的方法能实现这个功能,下面列出五种常用的实现的方法,请根据需要选择,个人觉得前三种使用起来比较方便,参见代码如下:
#include <vector>
#include <iostream>
#include <string>
#include <sstream> string str = "dog cat cat dog";
istringstream in(str);
vector<string> v; // Method 1
string t;
while (in >> t) {
v.push_back(t);
}
// Method 2
// #include <iterator>
copy(istream_iterator<string>(in), istream_iterator<string>(), back_inserter(v));
// Method 3
string t;
while (getline(in, t, ' ')) {
v.push_back(t);
}
// Method 4
string str2 = str;
while (str2.find(" ") != string::npos) {
int found = str2.find(" ");
v.push_back(str2.substr(, found));
str2 = str2.substr(found + );
}
v.push_back(str2);
// Method 5
// #include <stdio.h>
// #include <stdlib.h>
// #include <string.h>
char *dup = strdup(str.c_str());
char *token = strtok(dup, " ");
while (token != NULL) {
v.push_back(string(token));
token = strtok(NULL, " ");
}
free(dup);
C++ Split string into vector<string> by space的更多相关文章
- C++ Split string into vector<string> by space(转)
c++中没有这么方便的实现,但也有很多的方法能实现这个功能,下面列出五种常用的实现的方法,请根据需要选择,个人觉得前三种使用起来比较方便,参见代码如下: #include <vector> ...
- 编写程序,将来自文件中的行保存在一个vector<string>,然后使用一个istringstream 从vector中读取数据,每次读一个单词
#include<fstream> #include <vector> #include<string> #include<iostream> #inc ...
- 谈谈两种标准库类型---string和vector
两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库 ...
- C# String.split()用法小结。String.Split 方法 (String[], StringSplitOptions)
split()首先是一个分隔符,它会把字符串按照split(' 字符')里的字符把字符串分割成数组,然后存给一个数组对象. 输出数组对象经常使用foreach或者for循环. 第一种方法 string ...
- string和vector
一.String对象 1.string s; s.size(); //返回的是s中字符的个数,也是s的长度: //string对象最后没有加空字符 //size()返回的是string::s ...
- 单独删除std::vector <std::vector<string> > 的所有元素
下面为测试代码: 1.创建 std::vector< std::vector<string> > vc2; 2.初始化 std::vector<string> vc ...
- POJ 3096 Surprising Strings(STL map string set vector)
题目:http://poj.org/problem?id=3096 题意:给定一个字符串S,从中找出所有有两个字符组成的子串,每当组成子串的字符之间隔着n字符时,如果没有相同的子串出现,则输出 &qu ...
- 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中
#include<iostream> #include<string> #include<vector> #include<fstream> using ...
- vector(char*)和vector(string)
vector<char*> ch; vector<string> str; for(int i=0;i<5;i++) { char *c=fun1();//通过这个语句产 ...
随机推荐
- jQuery结合Ajax实现简单的前端验证和服务端查询
上篇文章写了简单的前端验证由传统的JavaScript转向流畅的jQuery滑动验证,现在拓展一下,使用Ajax实现用户体验比较好的异步查询,同样还是从建立一个简单的表单开始 <form nam ...
- [Android Pro] PackageManager#getPackageSizeInfo (hide)
referce to : http://www.baidufe.com/item/8786bc2e95a042320bef.html 计算Android App所占用d的手机内存(RAM)大小.App ...
- 解决 g++ error:/usr/lib/rpm/redhat/redhat-hardened-cc1 No that file and directory
You need to install redhat-rpm-config which is required by some of the qt switches, probably: sudo d ...
- sublime 3103liense
Sublime Text 3.x (after Build 309X) —– BEGIN LICENSE —–Michael BarnesSingle User LicenseEA7E-8213858 ...
- SecureCRT乱码
http://jingyan.baidu.com/article/948f59245be128d80ff5f9aa.html
- SVN服务器搭建和使用(二)(转载)
转载地址:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407979.html 上一篇介绍了VisualSVN Server和Torto ...
- jquery之别踩白块游戏的实现
转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5687112.html 前端学习要告一段落了,也没机会写什么像样的东西,然后无意中想起某人以前给我玩了一下别踩白块的游 ...
- 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)
转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...
- HDU 5682/BestCoder Round #83 1003 zxa and leaf 二分+树
zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...
- android中sharedPreferences的用法
SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...