C++文本处理_文件读写
QT在进行文本读写时和C++一样,是基于文本流操作的。
QT在读取全部文本时,相对比较便捷。使用readAll()函数,配合split()进行分隔符的拆分(例如行结束符"\n"),可将拆分结果赋值给list,然后进行后续的数据处理。
ringRoadDistList = ringRoadDistStream.readAll().split("\n",QString::SkipEmptyParts);
在C++中也可以实现类似的效果:
list<string> strList;
char line[];
while (false == staEnLane2Stream.eof())
{
staEnLane2Stream.getline(line, sizeof(line)); //c从staEnLane2Stream按行读取sizeof(line)个数到缓冲区line中(遇到"\n",将提前截止)
strList.push_back(line);
}
如果遇到换行符'\n'(第一种形式)或delim(第二种形式),则读取终止,'\n'或delim都不会被保存进s对应的数组中。
基于文本流的输出,两个类似:
ofstream resultStream;
resultStream.open(staEnLane3Path.c_str(), ios_base::out);
if (false == resultStream.is_open())
{
cerr << "error: unable to open output file: " << staEnLane3Path << endl;
return ;
}
while (lane2Map.end() != j)
{
cout << (*j).first << " " << (*j).second << endl;
resultStream << (*j).first << " " << (*j).second << endl;
++j;
}
举个栗子:
// ringRoadTime.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h"
#include <string>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <list>
#include <map>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
string rootPath = "E:/superHighway/ringRoadData/GC/GC_Entry/";
string staEnLane2Name = "GC_stationEntryLane2.csv";
string staEnLane3Name = "GC_stationEntryLane.csv";
string staEnLane2Path = rootPath + staEnLane2Name;
string staEnLane3Path = rootPath + staEnLane3Name;
//ifstream staEnLane2Stream(staEnLane2Path.c_str(), ios::in);
ifstream staEnLane2Stream;
ofstream resultStream; //文件打开,保存数据到list,关闭文件
staEnLane2Stream.open(staEnLane2Path.c_str(), ios_base::in);
if (false == staEnLane2Stream.is_open())
{
cerr << "error: unable to open input file: " << staEnLane2Path << endl;
return ;
}
list<string> strList;
char line[];
while (false == staEnLane2Stream.eof())
{
staEnLane2Stream.getline(line, sizeof(line));
strList.push_back(line);
}
staEnLane2Stream.close();
resultStream.open(staEnLane3Path.c_str(), ios_base::out);
if (false == resultStream.is_open())
{
cerr << "error: unable to open output file: " << staEnLane3Path << endl;
return ;
} //数据插入map中,进行匹配
map<string, string> lane2Map;
list<string>::iterator k = strList.begin();
for (; k != strList.end(); ++k)
{
size_t i = (*k).find_first_of(",");
lane2Map.insert(pair<string, string>((*k).substr(,i), (*k).substr(i+)));
}
map<string, string>::iterator j = lane2Map.begin();
while (lane2Map.end() != j)
{
cout << (*j).first << " " << (*j).second << endl;
resultStream << (*j).first << " " << (*j).second << endl; //基于文本流的数据写入
++j;
}
resultStream.close(); system("pause");
return ;
}
C++文本处理_文件读写的更多相关文章
- 零基础逆向工程16_C语言10_宏定义_头文件_内存分配_文件读写
#define 无参数的宏定义的一般形式为:#define 标识符 字符序列 如:#define TRUE 1 注意事项: 1.之作字符序列的替换工作,不作任何语法的检查 2.如果宏定义不当,错误要到 ...
- python基础操作_文件读写操作
#文件读写# r只能读不能写,且文件必须存在,w只能写不能读,a只能写不能读# w+是写读模式,清空原文件内容# r+是读写模式,没有清空原文件内容,# 只要有r,文件必须存在,只要有w,都会清空原文 ...
- C#_文件读写常用类介绍
首先要熟悉.NET中处理文件和文件夹的操作.File类和Directory类是其中最主要的两个类.了解它们将对后面功能的实现提供很大的便利. 本节先对和文件系统相关的两个.NET类进行简要介 ...
- day5_函数_文件读写_用一个函数来满足文件的读或者写_应用默认参数
import json def op_file_tojson(filename,dic=None): #默认值参数,根据是否传dic字典来判断读还是写 if dic: #如果dic传了值,不是空的,则 ...
- 关于Windows文件读写_暗涌_新浪博客
关于Windows文件读写_暗涌_新浪博客 这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少.稍微给大家分享一下. 限制windows文件读写速度的 ...
- Demo02_对结构体进行文件读写_张仕传_作业_
#include <iostream> using namespace std; #define StructArrarySize 5 // 老师数量 #define StudentNum ...
- 7. Buffer_包描述文件_npm常用指令_fs文件读写_模块化require的规则
1. Buffer 一个和数组类似的对象,不同是 Buffer 是专门用来保存二进制数据的. 特点: 大小固定: 在创建时就确定了,且无法调整 性能较好: 直接对计算机的内存进行操作 每个元素大小为1 ...
- QT_8_Qt中的事件处理_定时器事件_定时器类_事件分发器_事件过滤器_绘图事件_高级绘图事件_绘图设备_QFile 文件读写_QFileInfo文件信息
Qt中的事件处理 1.1. 捕获QLabel中是鼠标事件 1.2. enterevent 鼠标进入 1.3. leaveevent 鼠标离开 1.4. 鼠标按下MyLabel::mousePressE ...
- Go语言学习之7 接口实例、终端文件读写、异常处理
本节主要内容: 1. 终端读写2. 文件读写3. 命令行参数4. Json5. 自定义错误 1. 终端读写 操作终端相关文件句柄常量 os.Stdin:标准输入 os.Stdout:标准输 ...
随机推荐
- 简单的SQL语句
说明:SQL语句大小写都可以,执行一句时,后面可不加分号,如果同时执行两句,就必须加分号,不然会报错. --+空格 是SQL的注释 表格名为users,里面有name和age属性 一.增 inser ...
- Linux-/proc目录简介
Linux /proc目录简介 1.简单了解 以文件系统的方式为访问系统内核数据的操作提供接口 由linux内核提供:通过/proc文件系统,在运行时访问内核内部数据结构.改变内核设置的一种机制 pr ...
- mysql事务
1. 事务并不专属于mysql 2. 事务的ACID特性 1)原子性(atomicity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中得所有操作要么全部提交成功,要么全部失败回滚,对于一 ...
- javase--反射
//书写规则 package cn.reflex; public interface PCI { public void open(); public void close(); } //调用方法 p ...
- pk8和x509.pem转换成keystore
转自:http://www.cnblogs.com/platte/p/3511814.html 一 在github上下载工具 https://github.com/getfatday/keytool- ...
- Python-基础练习题2
编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 #!/usr/bin/env python # _*_ coding:utf8 _*_ import getpass Userna ...
- c#程序中对密码进行加密的方法
在ADO.NET中,向数据库添加数据时,怎样对数据中的密码进行加密?(也就是说在数据表中也看不到用户的密 码,只是一些经过编译后的字符串,以防止数据库管理员利用用户的密码进行非法操作.) 首先, ...
- 简单animate方法的封装
function animate(ele,json,fn){ clearInterval(ele.timer); ele.timer = setInterval(function () { var b ...
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
java日期格式大全 format SimpleDateFormat(转) SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH ...
- Linux 操作mysql数据库 创建库 导入、删除表
确保线上的运行数据库是不可避免的本人小白,因公司上线没有办法自己去整服务器,深刻体会到服务器大神的霸气,所以为了增加记忆,服务广大员友记录一下 linux mysql 忘记root的密码无法登陆进my ...