今天由华为软件精英挑战赛的要求,读文件这块自己进行了总结,主要是泛型以及关联容器这块需要加强,现在总结了读文件的iterator的用法。

1、iterator inserter(essential C++ P93)

不需要限定容器的大小就进行插入:使用inserter adapter,这些adapter可以避免容器的assignment操作。

*back_inserter()会以容器的push_back()函数取代assignment运算符;

vector<int> vec;

vector<int> ivec{1,2,3,4};

copy(ivec.begin(),ivec.end(),back_inserter(vec));

  

*inserter()会以容器的push_front()函数取代assgnment运算符。这个inserter()接受两个参数;一个是容器,另一个是iterator,它指向容器内需要插入的位置。

vector<int> vec;
copy(vec.begin(),vec.end(),inserter(vec,vec.end())

*front_inserter()会以容器的push_back()函数取代assignment运算符。但是这个inserter只适合于list和deque。

记住上面的adapter不能用于array。

2、使用iostream iterator;

标准库定义有供输入和输出用的iostream iterator类,称为istream_iterator和ostream_iterator,支持单一类型的读取和写入,它们包含在《iterator》中,其中first表示为

istream_iterator<string> is(filename);

last定义为

istream_iterator<string> eof;

然后使用泛型算法copy(),将文件读取到vector<string> vec中

copy(is,eof,back_inserter(vec));

*******

如果要在两个字符之间插入符号,比如空格,可以使用如下的形式:

copy(is,eof,back_inserter(vec));
ostream_iterato<string> os(output_filename," ");
copy(vec.begin(),vec.end(),os);

  

getline(istream &in, string &s)

从输入流读入一行到string s

**读取一个文件(多行)存储到一个二维数组里面

void readFiletoVec() {
vector<vector<string>> vecFile;
ifstream in("input.txt");
vector<string> tmp,outVec;
ostream_iterator<string> outIter(cout, " ");
string s,tmpS;
while (getline(in, s)) {//读取每一行
istringstream ss(s);
while(ss >> tmpS)//每次读取,空格作为每次读取结束的标志
tmp.push_back(tmpS);
vecFile.push_back(tmp);
vector<string>().swap(tmp);//清空 }
for each(outVec in vecFile) {
copy(outVec.begin(),outVec.end(),outIter);
cout << endl;
} }

  

•功能:
–从输入流中读入字符,存到string变量
–直到出现以下情况为止:
•读入了文件结束标志
•读到一个新行
•达到字符串的最大长度
–如果getline没有读入字符,将返回false,可用于判断文件是否结束
 
 
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
using namespace std;
int Count = 0;
void IntSolve(int n) {
if (n == 1)
++Count;
for (int i = 2; i <= n;++i) {
if (n%i == 0)
IntSolve(n / i);
}
} int main() {
int n=0;
string s = "input.txt";//需要放在文件的project目录下
string sout = "output.txt";//自动创建文件
ifstream file;
ofstream output(sout);
file.open(s);
file >> n;
file.close();
IntSolve(n);
output << Count;//会自动覆盖原来的内容 }

  

getline及读文件总结的更多相关文章

  1. GoLang几种读文件方式的比较

    GoLang提供了很多读文件的方式,一般来说常用的有三种.使用Read加上buffer,使用bufio库和ioutil 库. 那他们的效率如何呢?用一个简单的程序来评测一下: package main ...

  2. Python之路 day2 按行读文件

    #1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = fil ...

  3. java的读文件操作

    java读取文件内容,可以作如下理解: 首先获得一个文件句柄,File file = new File():file即为文件句柄.两人之间联通电话网络了,就可以开始打电话了. 通过这条线路读取甲方的信 ...

  4. PHP使用feof()函数读文件的方法

    这篇文章主要介绍了PHP使用feof()函数读文件的方法,以实例形式对比了正确与错误的用法,阐明了feof()函数的使用技巧,需要的朋友可以参考下 本文实例讲述了PHP使用feof()函数读文件的方法 ...

  5. Java基础之读文件——使用输入流读取二进制文件(StreamInputFromFile)

    控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字. import java.nio.file.*; import java.nio.* ...

  6. c++中ifstream读文件的问题(关于eof())

    今天帮别人找BUG,是一段关于c++读写文件的问题,使用的是ifstream与outstream类,关于ofstream与ifstream的用法,此处不再獒述,见代码: #include<ios ...

  7. python (11)文件的读写 按行读文件

    读文件: 读取文件 f = open('\info.txt') fil = f.read() f.close() 按行读文件: f = open("info.txt") while ...

  8. Python学习入门基础教程(learning Python)--5.2 Python读文件基础

    上节简单的说明了一下Pyhon下的文件读写基本流程,从本节开始,我们做几个小例子来具体展示一下Python下的文件操作,本节主要是详细讲述Python的文件读操作. 下面举一个例子,例子的功能是读取当 ...

  9. Python按行读文件对比

    1. 最基本的读文件方法: # File: readline-example-1.py   file = open("sample.txt")   while 1:     lin ...

随机推荐

  1. Arctic Network(洛谷)--北极通讯网络(loj)

    洛谷传送门 loj传送门 一道蛮基础的最小生成树的题 题意也没绕什么圈子 只是叙述的有点累赘而已(loj上是这样的 也就读入加建边需要稍稍稍多想一下下 对于我这么一个蒟蒻 这是一道很好的板子题 (洛谷 ...

  2. java.lang.NoSuchMethodException: com.sun.tools.javac.util.List.<init>()

    主要原因是import jar包的时候import java.util.List;这个,导致错误

  3. malloc实现机制

    使用过c语言的都知道malloc是一个动态分配内存的函数,还可以通过free释放内存空间. 如果我们想分析一下malloc的源码,这其实不是一会就能看懂的,但是我们可以讨论一下malloc的简单实现. ...

  4. P1030 求先序排列 (一个非常棒的写法)

    理论正确就是真正的正确,误... 就是找嘛,找到每一个对应字符,然后对应的左右子树的区间,然后就可以了. #include <bits/stdc++.h> using namespace ...

  5. innerAudiocontext的坑

    链接:https://blog.csdn.net/sourcemyx/article/details/79424004 像wx.onNetworkStatusChange(function(){})回 ...

  6. [C/C++] 静态变量赋值问题 undefined reference to

    刚才在写代码的时候 用到了一个静态变量 然后在别人地方直接使用的时候 也就是 NetWork::Flag = 0; 像是这样使用的时候一直提示 undefined reference to 各种检查之 ...

  7. Spring Security教程之session管理

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

  8. Linux 目录结构与目录操作

    目录结构 Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后再次目录下再创建其他目录 在Linux系统中,一切皆文件 常见目录作用 / : 所有 ...

  9. 基于scikitlearn的深度学习环境安装(三)(完整版)

    OS Linux  Ubuntu14.04 安装 pip (python2.7.9或以上自带pip) sudo apt-get install python-pip pip是python环境下安装包的 ...

  10. 关于archive(feature)

    配置如下archive命令,可以记录登录到设备,具体配置了哪些命令: R3(config)#archiveR3(config-archive)#log configR3(config-archive- ...