使用c++标准IO库实现txt文本文件的读与写操作
练习c++primer中关于输入输出流的操作。
任务是从固定格式的forreading.txt文档中读取相应的数据,转存到forwriting.txt中去。
forreading.txt 格式如下:
(12)(13)(34)(1099)
(23)(28)(29)(25)
(32)(45)
(123)
(120)(333)(1)(8)
(34)(45)
(90)(110)
希望读取其中数字,并以空格为间隔符号存在forreading当中,代码如下:
/*针对的数据格式如下*/
/*(23)(26) */
/*(34)(45)(67)(89) */
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
using namespace std; int main()
{
ifstream infile;
infile.open( "forreading.txt" );
ofstream outfile;
string line, word,temp_str;
vector<vector<string> > a;
bool flag_begin{ false }, flag_end{ false }; while (getline(infile, line))
{
vector<string> a_i;
istringstream stream(line);
while (stream >> word)
{
for (string::iterator iter = word.begin(); iter != word.end(); iter++)
{
char llabel = 40,rlabel=41;//这两个数值对应着“()”的asc码
if (*iter == llabel)
{
flag_begin = true; flag_end = false; continue;
}
if (*iter == rlabel)
{
flag_end = true; flag_begin = false;
} if ((flag_begin == true) && flag_end == false)
{
temp_str.push_back(*iter);
}
if ((flag_begin == false) && flag_end == true)
{
a_i.push_back(temp_str);//这里仍然无法实现将string转换成数字,而是以string的形式保存下来
temp_str.clear();
/*a = atoi(temp_str);*/
}
}
}
a.push_back(a_i);
a_i.clear();
}
outfile.open("forwriting.txt");
for (vector<vector<string> >::iterator iter_out = a.begin(); iter_out != a.end(); iter_out++)
{
for (vector<string>::iterator iter_iner = (*iter_out).begin(); iter_iner != (*iter_out).end(); iter_iner++)
{
cout << *iter_iner << " ";
outfile << *iter_iner << " ";
}
cout << endl;
outfile << "\n";
}
return 0;
}
在Ubuntu中makefile内容为:
edit:readtxtfile.o
g++ -o edit readtxtfile.o
readtxtfile.o:readtxtfile.cpp
g++ -c readtxtfile.cpp
clean :
rm readtxtfile.o
输出的forwriting.txt为:
12 13 34
23 28 29 25
32
总结:这里仍然要根据txt的具体组织格式去读取,并不能通用。另外,从string变量直接转换成int变量的方法还有待探究。个人感觉用c的处理方法可能会更方便一些,有时间可以做一下尝试。
使用c++标准IO库实现txt文本文件的读与写操作的更多相关文章
- 18、标准IO库详解及实例
标准IO库是由Dennis Ritchie于1975年左右编写的,它是Mike Lestbain写的可移植IO库的主要修改版本,2010年以后, 标准IO库几乎没有进行什么修改.标准IO库处理了很多细 ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- ca75a_c++_标准IO库-利用流对象把文件内容读取到向量-操作文件
/*ca75a_c++_标准IO库习题练习习题8.3,8.4,8.6习题8.9.8.10 ifstream inFile(fileName.c_str());1>d:\users\txwtech ...
- 文件IO函数和标准IO库的区别
摘自 http://blog.chinaunix.net/uid-26565142-id-3051729.html 1,文件IO函数,在Unix中,有如下5个:open,read,write,lsee ...
- C++ Primer 读书笔记: 第8章 标准IO库
第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...
- 高级UNIX环境编程5 标准IO库
标准IO库都围绕流进进行的 <stdio.h><wchar.h> memccpy 一般用汇编写的 ftell/fseek/ftello/fseeko/fgetpos/fsetp ...
- c++ primer 学习杂记3【标准IO库】
第8章 标准IO库 发现书中一个错误,中文版p248 流状态的查询和控制,举了一个代码例子: int ival; // read cin and test only for EOF; loop is ...
- C++Primer,C++标准IO库阅读心得
IO 标准库类型和头文件 iostream istream 从流中读取 ostream 写到流中去 iostream 对流进行读写:从 istream 和 ostream 派生而来fstream if ...
随机推荐
- 大数据学习之路-Centos6安装python3.5
Centos 6.8安装python3.5.2 因为学习所需,需要用到python3.x的环境,目前Linux系统默认的版本都是python2.x的,还有一些自带的工具需要用到python2.6版本, ...
- 1026 程序运行时间 (15 分)C语言
题目描述 要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间.这个时间单位是clock tic ...
- Activity启动过程源码分析(Android 8.0)
Activity启动过程源码分析 本文来Activity的启动流程,一般我们都是通过startActivity或startActivityForResult来启动目标activity,那么我们就由此出 ...
- 高德API对接
<?php class GaoDeAPI { private $key = '123456789'; # 你应用key /** * 地址转经纬度 */ public function getTr ...
- 异步-promise、async、await
下面代码打印结果是? setTimeout(()=>{ console.log(1) }) new Promise((resolve,reject)=>{ console.log(2) r ...
- Codeforces - A. Watermelon
A. Watermelon time limit per test 1 second memory limit per test 64 megabytes input standard input o ...
- 如何在ArcGIS中恢复注记文字
文字标注是地图上一种特殊的视觉元素,可通过文字表达图形符号难以说明的地图内容,它与图形符号结合在一起存在于地图上,是关乎地图构图美的关键因素之一. MapGIS软件下子图对象和注释对象统统保存在点文件 ...
- vue状态管理vuex从浅入深详细讲解
1.vuex简介以及创建一个简单的仓库 vuex是专门为vue框架而设计出的一个公共数据管理框架,任何组件都可以通过状态管理仓库数据沟通,也可以统一从仓库获取数据,在比较大型的应用中,数据交互庞大的情 ...
- Java 遍历集合时产生的ConcurrentModificationException异常
前几天做Java实验的时候,打算用foreach遍历一个ArrayList集合,并且当集合中的某个元素符合某个值时删除这个元素.写完运行时抛出了ConcurrentModificationExcept ...
- 四、JVM之栈与栈帧
栈: 1.又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把 另一端称为栈底.其特性是先进后出. 2.栈是线程私有的,生命周期跟线程相同,当创 ...