练习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文本文件的读与写操作的更多相关文章

  1. 18、标准IO库详解及实例

    标准IO库是由Dennis Ritchie于1975年左右编写的,它是Mike Lestbain写的可移植IO库的主要修改版本,2010年以后, 标准IO库几乎没有进行什么修改.标准IO库处理了很多细 ...

  2. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  3. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  4. 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 ...

  5. 文件IO函数和标准IO库的区别

    摘自 http://blog.chinaunix.net/uid-26565142-id-3051729.html 1,文件IO函数,在Unix中,有如下5个:open,read,write,lsee ...

  6. C++ Primer 读书笔记: 第8章 标准IO库

    第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...

  7. 高级UNIX环境编程5 标准IO库

    标准IO库都围绕流进进行的 <stdio.h><wchar.h> memccpy 一般用汇编写的 ftell/fseek/ftello/fseeko/fgetpos/fsetp ...

  8. c++ primer 学习杂记3【标准IO库】

    第8章 标准IO库 发现书中一个错误,中文版p248 流状态的查询和控制,举了一个代码例子: int ival; // read cin and test only for EOF; loop is ...

  9. C++Primer,C++标准IO库阅读心得

    IO 标准库类型和头文件 iostream istream 从流中读取 ostream 写到流中去 iostream 对流进行读写:从 istream 和 ostream 派生而来fstream if ...

随机推荐

  1. VS2017+QT5.11.2+SeetaFace1.0/SeetaFace2.0的简单实现

    SeetaFace开源引擎GitHub地址:https://github.com/seetaface/SeetaFaceEngine SeetaFace2开源引擎GitHub地址:https://gi ...

  2. 工具系列 | Docker基本概念小结

    ▍什么是Docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化.容 ...

  3. 20191024-3 互评Alpha阶段作品——都是为了生活组

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9860 评价:都是为了生活组——All  For  Eating 基于NAB ...

  4. 【题解】P4137 Rmq Problem(莫队)

    [题解]P4137 Rmq Problem(莫队) 其实这道题根本就不用离散化! 因为显然有\(mex\)值是\(\le 2\times 10^5\)的,所以对于大于\(2\times 10^5\)的 ...

  5. Spring中常见的设计模式——策略模式

    策略模式(Strategy Pattern) 一.策略模式的应用场景 策略模式的应用场景如下: 系统中有很多类,而他们的区别仅仅在于行为不同. 一个系统需要动态的在集中算法中选择一种 二.用策略模式实 ...

  6. 天梯 L2 链表去重

    L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一 ...

  7. 初始 Kafka Consumer 消费者

    温馨提示:整个 Kafka 专栏基于 kafka-2.2.1 版本. 1.KafkaConsumer 概述 根据 KafkaConsumer 类上的注释上来看 KafkaConsumer 具有如下特征 ...

  8. MySQL数据库用户、角色、授权

    权限包括  insert   delete   update   select   all privileges 登录MySQL > mysql -uroot -p Enter password ...

  9. 字符串String类常见算法题

    1.将一个字符串进行反转.将字符串中指定部分进行反转. public class StringDemo { //方式一:转换为char[] public String reverse(String s ...

  10. 图解kubernetes调度器预选设计实现学习

    Scheduler中在进行node选举的时候会首先进行一轮预选流程,即从当前集群中选择一批node节点,本文主要分析k8s在预选流程上一些优秀的筛选设计思想,欢迎大佬们指正 1. 基础设计 1.1 预 ...