getline及读文件总结
今天由华为软件精英挑战赛的要求,读文件这块自己进行了总结,主要是泛型以及关联容器这块需要加强,现在总结了读文件的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;
}
}
#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及读文件总结的更多相关文章
- GoLang几种读文件方式的比较
GoLang提供了很多读文件的方式,一般来说常用的有三种.使用Read加上buffer,使用bufio库和ioutil 库. 那他们的效率如何呢?用一个简单的程序来评测一下: package main ...
- Python之路 day2 按行读文件
#1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = fil ...
- java的读文件操作
java读取文件内容,可以作如下理解: 首先获得一个文件句柄,File file = new File():file即为文件句柄.两人之间联通电话网络了,就可以开始打电话了. 通过这条线路读取甲方的信 ...
- PHP使用feof()函数读文件的方法
这篇文章主要介绍了PHP使用feof()函数读文件的方法,以实例形式对比了正确与错误的用法,阐明了feof()函数的使用技巧,需要的朋友可以参考下 本文实例讲述了PHP使用feof()函数读文件的方法 ...
- Java基础之读文件——使用输入流读取二进制文件(StreamInputFromFile)
控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字. import java.nio.file.*; import java.nio.* ...
- c++中ifstream读文件的问题(关于eof())
今天帮别人找BUG,是一段关于c++读写文件的问题,使用的是ifstream与outstream类,关于ofstream与ifstream的用法,此处不再獒述,见代码: #include<ios ...
- python (11)文件的读写 按行读文件
读文件: 读取文件 f = open('\info.txt') fil = f.read() f.close() 按行读文件: f = open("info.txt") while ...
- Python学习入门基础教程(learning Python)--5.2 Python读文件基础
上节简单的说明了一下Pyhon下的文件读写基本流程,从本节开始,我们做几个小例子来具体展示一下Python下的文件操作,本节主要是详细讲述Python的文件读操作. 下面举一个例子,例子的功能是读取当 ...
- Python按行读文件对比
1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: lin ...
随机推荐
- js加密(六)QB.com
1. url: https://notice.qb.com/detail?noticeId=256 2. target: 3. 分析: 3.1 打开网址,刷新页面,看看都发送了哪些请求. 看到了发送了 ...
- zol验证码抓包
http://www.zol.com/detail/lcd/samsung/25254662.html?zp_from=pro_price_pricenode 网站’ http://city.zol. ...
- jenkins和hudson
自动化构建:Jenkins起源于Hudson.Hudson在商业软件的路上继续前行,而Jenkins则作为开源软件,从hudson分支出来. 因此现在的jenkins和hudson非常类似,但是随着二 ...
- Linux新建SVN版本库
1.进入svn 版本库(如/www/svn) 2.创建svn 版本库svnadmin create edition 3.进入新建的版本库库目录cd edition 4.进入版本库配置目录cd con ...
- PAT 1017 Queueing at Bank (模拟)
Suppose a bank has K windows open for service. There is a yellow line in front of the windows which ...
- ACM-ICPC实验室20.2.19测试-图论
B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题. 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h& ...
- Python学习(一)——开发语言和Python的安装
开发语言: 高级语言: Python,Java,PHP,C#,Go,ruby,C++...都依赖于C→字节码 语言的对比: Python,Java:既能写网页又能写后台 Python:开发效率比Jav ...
- 基于springboot实现轮询线程自动执行任务
本文使用: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时 ...
- JSON parse error: default constructor not found. class java.time.YearMonth; nested exception is com.alibaba.fastjson.JSONException: default constructor not found. class java.time.YearMonth
java8新出的YearMonth可以方便的用来表示某个月.我的项目中使用springmvc来接收YearMonth类型的数据时发现 x-www-from-urlencoded 格式的数据可以使用&q ...
- 分布式一致性协议 --- Paxos
问题 Paxos 到底解决什么样的问题,动机是什么 Paxos 流程是怎么样的? Paxos 算法的缺陷是什么 概述 Paxos 是分布式一致性算法,根据少数服从多数的原则多个节点确定某个数值.通过学 ...