istream_iterator

原创 2006年06月19日 16:18:00

// anagrams.cpp : 定义控制台应用程序的入口点。
//
//此练习是学习ifstream,istream_iterator,binary_search,next_permutation
//istream_iterator这是一个迭代器,是输入流的迭代器,

#include "stdafx.h"

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <cassert>
#include <iterator>

using namespace std;

int main(int argc, char* argv[])
{
 //
 //接受用户输入路径,在这里需要留心的是,ifstream的使用,ifstream就是一个类,文件输入留
 // ifstream ifs(strPath.c_str())就是构造了一个ifstream的实例
 //
 string strPath("c://hello.txt");
 cout<<"请输入要查找的文件路径: "<<endl;
 cin>>strPath;

 ifstream ifs(strPath.c_str());
 if(!ifs.is_open())
 {
  cout<<"不能打开文件"<<endl;
  return -1;
 }

 //
 //从文件中读出数据
 //
 cout<<"正在从文件中读取数据"<<endl;
 typedef istream_iterator<string> string_input;
 vector<string> dictionary;
 copy(string_input(ifs),string_input(),back_inserter(dictionary));
 cout<<"文件中包含 "<<dictionary.size()<<" 个单词"<<endl;

 //
 //排序
 //
 sort(dictionary.begin(),dictionary.end());
 vector<string>::iterator iter;
 for(iter = dictionary.begin(); iter != dictionary.end(); iter++)
 {
  cout<<*iter<<endl;
 }

 //
 //输入目标单词并查找,其思路是: 将要查找的单词进行变换,然后再在dictionary中查找
 //必须注意的是next_permutation算法的用法
 //
 cout<<"请输入你要查找的单词:"<<endl;
 for(string_input j(cin);j != string_input(); j++)
 {
  string word = *j;
  sort(word.begin(),word.end());

  bool bIsFind = false;
  do
  {
   if(binary_search(dictionary.begin(),dictionary.end(),word))
   {
    cout<<" "<<word<<endl;
    bIsFind = true;
   }

  }while(next_permutation(word.begin(),word.end()));
  
  if(!bIsFind)
  {
   cout<<"对不起,没有找到相对应的单词!"<<endl;
  }
 }

 return 0;
}

 

相关文章推荐

istream_iterator 读取输入文件

  • 2017年03月28日 12:29
  • 2KB
  • 下载

STL适配器(ostream_itertor与istream_iterator)

ostream_itertor与istream_iterator //配接器 /* 是一种常用设计模式 将一个class的接口转换为另一个class的接口 使原本因接口不兼容的class可以死一起...

[zz]如何使用istream_iterator将cin转到vector? (C/C++) (STL)

本范例使用istream_iterator及copy(),将cin转到vector,只需一行的程序,vector经过sort(),再使用ostream_iterator将vector转到cout,也只...

istream_iterator的一点感悟

最近又来看这个《C++标准程序库》。以前大致看了容器和算法,觉得够用,现在才发现了解很甚少。于是继续加油看啊!发现自己在泛型方面的知识积累太少了,有机会一定要看一下《C++ Template》那本书啊...
  • zyysql
  • zyysql
  • 2011年08月01日 21:52
  • 634

istream_iterator

转自:http://www.cplusplus.com/reference/std/iterator/istream_iterator/ template , class D...

C++ istream_iterator以及cin输入的一些问题

#include #include #include #include #include #include using namespace std; int ...

C++中流迭代器istream_iterator 和 ostream_iterator的使用

//流迭代器istream_iterator 和 ostream_iterator的使用 #include #include #include #include #include usin...

STL中istream_iterator和ostream_iterator的基本用法

STL中istream_iterator和ostream_iterator的基本用法 标准程序库定义有供输入及输出用的iostream iterator类,称为istream_iterator和o...

istream_iterator和ostream_iterator学习体会

istream_iterator 在头文件的定义中 定义istream_iterator变量的方法为 istream_iterator in(strm);    (其中T指明此istream_it...
  • fdl19881
  • fdl19881
  • 2011年08月14日 13:18
  • 21831

从零开始学C++之STL(十):迭代器适配器{(插入迭代器back_insert_iterator)、IO流迭代器(istream_iterator、ostream_iterator)}

一、迭代器适配器 反向迭代器 插入迭代器 IO流迭代器 其中反向迭代器可以参考以前的文章。 二、插入迭代器 插入迭代器实际上是一个输出迭代器(*it=; ++) back_insert...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:istream_iterator
举报原因:
原因补充:

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