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 ...
随机推荐
- cordova将vue项目打包成apk
1,若vue项目不在cordova项目里,直接把它复制进来,避免改动代码的麻烦 2,直接按照以下链接进行操作即可 链接:https://www.cnblogs.com/qirui/p/8421372. ...
- VS2013 Solution Explorer can not open
Delete content under the path: C:\Users\username\AppData\Local\Microsoft\VisualStudio\12.0\Component ...
- Tarjan's algorithm
Tarjan算法可以用来求有向图的强连通分量个数,之前十分粗略的写了Kosaraju算法,这里打算比较认真的分析一下Tarjan算法,然后给出算法实现代码. Tarjan算法的主要算法部分也是dfs( ...
- JAVA单例实现方式(常用)
JAVA单例实现方式(常用) public class Singleton { // Q1:为什么要使用volatile关键字? private volatile static Singleton u ...
- 拓扑排序板子 hihocoder-1174
思路 不断删入度为1的点及其出边. 图解 #include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; vect ...
- linux--网络管理-ifconfig,route,netstat,ip,ss,dns,主机名网卡名修改bond
cat /etc/services 查看常见端口对应的服务 查一查某个端口号,是哪个进程在用 lsof -i :6010 49152-65535:动态端口或私有端口,客户端程序随机使用的端口 其 ...
- sqlserver数据将多个表或视图的数据合并到一个表或视图里的sql语句
create view dbo.V_ZDUser_DDasselect * from dbo.V_ZDUser_DD1 union all select * from dbo.V_ZDUser_DD2 ...
- Python学习笔记010
倒三角 num2 = int(input("Line:")) while num2 > 0: num1 = num2 while num1 > 0: ...
- JSON 解析中遇到的坑😭
最近做加解密遇到一个很“奇葩的问题”,解析服务端加密后的字符串 序列化 时一直报错 "json解析失败:Error Domain=NSCocoaErrorDomain Code=3840 & ...
- 常用的OpenCV 2.0函数速查
OpenCV 2.0函数释义列表 1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像 ...