【问题标题】:Fixing text in a .txt file修复 .txt 文件中的文本
【发布时间】:2018-03-09 08:39:43
【问题描述】:

我有一个家庭作业,我什至不知道如何开始。说明是要有一个包含一些错误文本的输入 .txt 文件。我必须在输出 .txt 文件中修复它,这意味着单词之间只有 1 个空格,逗号/标点符号之前没有空格,之后正好有 1 个空格。句首大写字母。它还说我不必使用 ASCII 表,因为大写字母在小写字母之前编码?

输入文本示例:

jaMEs  ,  mY  neIgHBor  , Is  A  dOcTor . he SPoke eaSIlY  ,  CLEarly And eloQuENtly.

输出:

James, my neighbor, is a doctor. He spoke easily, clearly and eloquently.

我们在课堂上所做的只是检查 ifstream/ofstream 并在 .txt 文件中输入/更改数据,所以我什至不知道从哪里开始。有没有办法解决它,所以它可以修复任何不正确的输入文本,还是我必须手动更改这个特定文本中的每个错误?无需为我解决。非常感谢您提供示例或一些提示以帮助我入门!

【问题讨论】:

  • 1) SO 也不是教程服务。你试过向你的导师寻求帮助吗? 2) “我们在课堂上所做的只是检查 ifstream/ofstream 并在 .txt 文件中输入/更改数据”这正是您在这里所需要的,所以有什么问题?
  • 开始尝试提出解决方案。编写一些代码来获取文件并原样写出。然后坚持一个功能来做出改变。扩展该功能。开发它。如果您遇到代码中的特定问题,请回来询问。但这不是为您完成家庭作业的地方。
  • 读取文件。检查每个字符是标点符号、空格还是字母。如果是字母,做...如果是空格,做...

标签: c++ file fstream


【解决方案1】:

将问题分解。首先,从文件中读取数据。随心所欲地存储它,可能是一个字符串,然后继续下一部分。检查每个字符,看是否正确。如果是,请继续。如果不是,请改正,然后继续。当您输入结束时,您就完成了。
要检查一个字符是否正确,您只需要检查它是否是并且应该是小写以及它是否应该是一个字符。如果它应该和不是,修复它,否则继续。

【讨论】:

    【解决方案2】:

    在阅读时检查每个字符。如果是句号,请记住将下一个字母数字大写,否则将其小写。如果是空格,请记住您已经看到了空格 - 在看到单词字符之前不要打印它。

    类似:

    #include <algorithm>
    #include <cctype>
    #include <iostream>
    #include <iterator>
    
    int main()
    {
        int(*t)(int) = std::toupper;
        char const*last = "";
        std::for_each(std::istreambuf_iterator<char>{std::cin},
                      std::istreambuf_iterator<char>{},
                      [&](char c){if(std::isspace(c))last=" ";
                          else if(std::isalnum(c=t(c)))std::cout<<last<<c,last="",t=std::tolower;
                          else if(c==',')std::cout<<c,last=" ";
                          else if(c=='.')std::cout<<c,last=" ",t=std::toupper;});
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多