《Accelerated C++》6.1.1实现split的另一种方法

原创 2018年04月16日 10:42:29

之前实现过split函数,是用索引的办法来实现的。现在重新来实现一下这个算法,采用迭代器来代替索引,并使用标准库算法。

主函数main.cpp

#include <iostream.h>
#include <vector.h>
#include <string.h>
#include "split.h"

using std::vector;	using std::string;
using std::cout;	using std::endl; 

int main(){
	string s;
	while(getline (cin, s)){
		vector<string> v = split(s);
		for(vector<string>::size_type i = 0;i != v.size();++i)
		cout<<v[i]<<endl;
	}
}

split()函数  split.cpp

#include <algorithm>
#include <cctype>
#include <string>
#include <vector>

#include "split.h"

using std::find_if;
using std::string;
using std::vector;

using std::isspace;

bool space(char c)
{
	return isspace(c);
}

bool not_space(char c)
{
	return !isspace(c);
}

vector<string> split(const string& str)
{
	typedef string::const_iterator iter;
	vector<string> ret;
	iter i = str.begin();
	while (i != str.end()) {
		i = find_if(i, str.end(), not_space);
		iter j = find_if(i, str.end(), space);
		if (i != str.end())
			ret.push_back(string(i, j));
		i = j;
	}
	return ret;
}

最后还有头文件 split.h  书上是没有定义这个头文件的,所我试着自己来写一下头文件的定义,学了这么久了,这个很简单,不是么?

#ifndef GUARD_split
#define GUARD_split

#include <vector.h>
#include <string.h>

bool space(char);
bool not_space(char);
vector<std::string> split(const std::string&);

#endif

细细品味ASP.NET (二)

细细品味ASP.NET (二)青苹果工作室(编译) 01-5-17 下午 01:33:55Web表单 ASP.NET Web Forms就是Web页面,同现在你用 ASP编写代码所做的工作是一样的。...
  • tchaikov
  • tchaikov
  • 2001-05-17 18:50:00
  • 981

Accelerated C++英文版及源代码

  • 2009年03月31日 14:05
  • 1.1MB
  • 下载

学习C++,第一本书《Accelerated C++》 总结

关于这个不太成功的计划的一个总结,一直没写总结,主要是因为完成情况不好,原本计划在两周内完成,结果直到这学期的第三周才完成。记得开始这个计划的第一周好像并没有什么任务,做得好像也还可以,但是后来就有了...
  • meisen1124
  • meisen1124
  • 2015-04-13 16:12:17
  • 1224

accelerated C++英文版

  • 2015年05月20日 13:56
  • 1.68MB
  • 下载

C++ Primer太厚了。如果你以前有基础,看Accelerated C++,没基础的话,看Essential C++。C++ Primer当你拿到书的时候,就不想看了。女孩子的话,拿都拿不动。

C++ Primer太厚了。如果你以前有基础,看Accelerated C++,没基础的话,看Essential C++。C++ Primer当你拿到书的时候,就不想看了。女孩子的话,拿都拿不动。 ...
  • aquanga
  • aquanga
  • 2011-08-29 00:27:58
  • 13763

Accelerated C++ 中文英文两版高清

  • 2012年03月30日 08:56
  • 11.83MB
  • 下载

accelerated c++ 课后习题答案:原书作者提供代码

  • 2015年05月28日 17:37
  • 266KB
  • 下载

Accelerated C++ 习题答案

1. 在google的groups,也就是http://groups.google.com里发现很多人在讨论这本书中个别题的答案.如果你想要某一道题的答案,就在那搜Accelerated C++ ex...
  • xp5xp6
  • xp5xp6
  • 2016-01-17 13:09:05
  • 1080

Accelerated C++ 英文版

  • 2011年05月06日 15:49
  • 872KB
  • 下载

Accelerated C++中文pdf版_英文pdf版_源码

  • 2009年09月23日 11:18
  • 11.21MB
  • 下载
收藏助手
不良信息举报
您举报文章:《Accelerated C++》6.1.1实现split的另一种方法
举报原因:
原因补充:

(最多只允许输入30个字)