【问题描述】

英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中:

1.从标准输入整数,作为排版后所有各行冒号在一行中的固定位置,输入的整数肯定大于排版后所有各行冒号前的字符个数,位置从1开始计数;

2.冒号左边的单词串以行头为基准左对齐,左边的最后一个单词与冒号之间以空格填充;冒号右边的单词串以冒号基准左对齐,最后一个单词后只有回车换行符,不再有其它字符;

3.冒号左右两边的单词间都只有一个空格分隔,并且要求冒号两边至少各有一个空格。

假设输入文件中每行字符个数不超过100。

【输入形式】

待排版的参演人员名单从当前目录下的listin.txt文件中读入,表示冒号位置的整数从标准输入读入。

【输出形式】

排版后的参演人员名单输出到当前目录下的listout.txt中。

【输入样例】

假设文件listin.txt内容为:

表示冒号固定位置的整数为:

40

【输出样例】

文件listout.txt中的内容应为:

【样例说明】

输入的文件listin.txt中有五行参演人员名单,要求排版后冒号位于第40个字符的位置,按照上述排版规则输出到文件listout.txt中。

#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main() {ifstream fin("listin.txt");ofstream fout("listout.txt");string a, b, c;int loc = 0, i = 0;cin >> loc;while (!fin.eof()) {getline(fin, a);if (a == "") {continue;}for (i = 0;i < a.length();i++) {//先把所有制表符换成空格一起处理if (a[i] == '\t') {a.replace(i, 1, " ");}}for (i = 0;;i++) {           //处理开头的空格if (a[i] == ' ' ){a.replace(i, 1, "");i--;}else {break;}}for (;;i++) {             //删除中间空格if (a[i] == ' ' && a[i + 1] == ' ') {a.replace(i, 1, "");i--;}if (a[i] == ':') {break;               //找到冒号为止}}b = a.substr(0, i);      //冒号前的字符串c = a.substr(i + 1); //冒号后的字符串for (i = 0;;i++) {      //处理冒号后的空格if (c[i] == ' ') {c.replace(i, 1, "");i--;}else {break;}}for (;i < c.length();i++) {if (c[i] == ' ' && c[i + 1] == ' ') {//这里调试了好久,只因为把c打成a了,吐血c.replace(i, 1, "");i--;}}for (i = c.length() - 1;i > 0;i -- ) {//删除后面的空格if (c[i] == ' ') {                    //这里又调试了好久,又是因为把c打成a了,emmmmmc.replace(i, 1, "");}else {break;}}fout.width(loc-1);fout.setf(ios::left);fout.fill(' ');fout << b << ": " << c << endl;}fin.close();fout.close();
}

总结:
这道题相当不好用字符串行处理,要考虑的地方非常多,包括换行符的识别,结尾删除空格,最简单的方法应该是依次读取单词,再按照格式输出。
但目前还不知道除了getline有什么识别换行的方法。以后有时间再试试另一种方式。
注意:
1.复制粘贴代码要改全,a和c就别错了
2.缺点是处理复杂,太多循环,时间上看很糟糕

实验十 文件读写 1. 文件排版(文本文件读写)相关推荐

  1. python创建txt文件并写入 编码-Python文本文件读写操作时的字符编码问题

    说明1:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须 ...

  2. python文件读写方法手机,python文本文件读写的3种方法

    第一种方法: file1 = open("test.txt") file2 = open("output.txt","w") while T ...

  3. Python实训day03pm【列表生成式、非文本文件的读写与复制、文本文件读写练习】

    Python实训-15天-博客汇总表 目录 1.列表生成式 2.列表的嵌套 2.1.习题1 2.2.习题2 3.非文本文件的读写 3.1.读取文件的大小 3.2.复制文件 4.课堂练习 列表生成式 非 ...

  4. 作业:文件排版(文本文件读写)

    [问题描述] 英文电影中参演人员名单一般以某种方式进行排版显示.给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由 ...

  5. c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言

    system.io命名空间中的类为托管应用程序提供文件以及其他形式的输入输出.托管i/o的基本构件是流,而流是字节导向的数据的抽象表示.流通过system.io.stream类表示. system.i ...

  6. C语言文件读写(1)-文本文件读操作

    C语言文件读写--文本文件读操作 最近和几个初学C语言的朋友讨论文件读写,发现他们在使用C语言文件读写功能的时候遇到了不少问题,不是文件打开方式有问题,就是文件读写有问题,总是得不到自己想要的结果. ...

  7. Python读写docx文件(三十五)

    Python读写docx文件 Python读写word文档有现成的库可以处理 pip install python-docx安装一下. https://python-docx.readthedocs. ...

  8. 十、封装python3读写ini文件类

    自己编写封装的python3读写ini文件类. main.py # -*- coding: utf-8 -*- import os import configparserclass OperateIn ...

  9. Android开发笔记(三十四)Excel文件的读写

    Android中操作Excel文件的场合较少见,主要是一些专业领域导入导出报表时使用,所以处理Excel读写的开源代码也很稀缺.目前读写Excel主要采用开源库jxl,这个是韩国人写的excel操作工 ...

  10. 第二十五课:文件的读写

    一.文件的打开与关闭 在python中,使用open函数,打开一个已经存在的文件,或者新建一个新文件. 函数语法 open(name[, mode[, buffering[,encoding]]]) ...

最新文章

  1. 用 jQuery Masonry 插件创建瀑布流式的页面(转)
  2. java 判断水仙花_Java实现判断水仙花数
  3. python工程师-Python工程师必看的面试问题与解答(中)
  4. 大型网站架构演进的五大阶段盘点
  5. 领域驱动设计-什么是领域驱动设计和怎么使用它
  6. Pwn环境配置(二)——VMware虚拟机安装Ubuntu 16.04系统
  7. bee 字符串转int_Beego在views中格式化显示时间(int64转string)
  8. Spring 事务失效的 8 种场景!
  9. java和asp.net core_干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结...
  10. 难道我真的只是你生命中的过客?
  11. 【C语言取反运算符】~2是多少?~-5是多少?
  12. 半导体物理学——(四)半导体的导电性
  13. 分枝定界法matlab,分支定界法 求混合0-1规划问题
  14. 浅析芝麻信用分征信体系
  15. 邱锡鹏《神经网络与深度学习》—— 部分习题答案整理
  16. openGauss雄踞墨天轮2021年度中国数据库魔力象限领导者
  17. 鸿蒙系统教程,麒麟9000+鸿蒙操作系统,华为新平板有点牛
  18. 2018百度云ABC智能物联大会发布世界顶级智能边缘产品BIE
  19. 启动ps时,老是出现一个提示框:不能输入剪贴板,因为意外遇到文件尾
  20. 网易云音乐排行榜接口取消后解决方法(网易云音乐小程序)

热门文章

  1. check if DVE variable is valid
  2. python假期培训班
  3. 《深入理解Android 卷III》第八章深入理解Android壁纸
  4. 禁用计算机的网络连接无线网络连接,电脑设置了禁用网络,连接不上WIFI.怎么解除...
  5. C语言实验——求两个整数之中较大者
  6. Pascal词法分析器用java实现
  7. oracle12c安装卡住_记一次oracle12c安装过程问题及处理方法
  8. vue js监听浏览器tab页切换
  9. Windows通过虚拟机的Ubuntu系统安装、配置、管理、远程访问ClickHouse
  10. 咳血的独角兽丨互联网的幕后攻防