当前位置: 首页 > 知识库问答 >
问题:

使用ifstream读取.txt并使用ofstream写入新的.txt文件,但仅第一行有效

璩浩广
2023-03-14

我正在尝试读取一个文本文件text.txt,其中包含表示十六进制值的文本:

0123456789abcdef 
0123456789abcdef
0123456789abcdef
0123456789abcdef
0123456789abcdef
0123456789abcdef
0123456789abcdef 

我应该读取这个文件,并使用ofstream写入一个新文件output.txt来写入这些十六进制值的二进制等价值,其中-表示0,而#表示1。

示例:

0 = ----
1 = ---#
2 = --#-
...
F = ####

output.txt的输出是

---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####

在应该的时候

---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
---#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####

我的逻辑就在那里,但是output.txt似乎只写了text.txt的第一行。这让我相信我只是在读第一行。

我被迫使用C样式的字符串,因此我读入了char数组。

这是我的代码

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream myfile;
    myfile.open("test.txt");

    ofstream outfile;
    outfile.open("output.txt"); //ofstream to output.txt based on character in words[]

    char words[10001] = {'\0'}; //c-style string
    if (myfile.is_open())
    {
        while (myfile >> words)
        {
            myfile >> words; //read myfile text into char words[]

            for (char c : words) //the ofstream to output.txt based on char c in words
            {
                if (c == '0')
                    outfile << "----";
                else if (c == '1')
                    outfile << "---#";
                else if (c == '2')
                    outfile << "--#-";
                else if (c == '3')
                    outfile << "--##";
                else if (c == '4')
                    outfile << "-#--";
                else if (c == '5')
                    outfile << "-#-#";
                else if (c == '6')
                    outfile << "-##-";
                else if (c == '7')
                    outfile << "-###";
                else if (c == '8')
                    outfile << "#---";
                else if (c == '9')
                    outfile << "#--#";
                else if (c == 'a')
                    outfile << "#-#-";
                else if (c == 'b')
                    outfile << "#-##";
                else if (c == 'c')
                    outfile << "##--";
                else if (c == 'd')
                    outfile << "##-#";
                else if (c == 'e')
                    outfile << "###-";
                else if (c == 'f')
                    outfile << "####";
            }
        }
        myfile.close();
    }

    return 0;
}

我怀疑是myfile>>words,但我不完全确定。我加了几条评论,试图解释一下我去的路线。

共有2个答案

彭雨华
2023-03-14

我建议使用以下方法来处理文件:

ifstream infile("infile.txt");
ofstream outfile("outfile.txt");

if(infile.is_open()){
    while(!infile.eof()){
        //do the readings
    }
}else
{
    cout << "ERROR::FILE NOT SUCCESFULLY OPENED";
}
陆野
2023-03-14

你用了

            ofstream outfile;
            outfile.open("output.txt");

在循环内。这使得文件在每次迭代中都是打开的,这将清除文件的内容。您应该在while循环之前移动它。

还要注意,您的条件while(!myfile.eof())是错误的。相反,您应该将读取myfile>>words移到条件中,以便在使用“read”之前检查读取是否成功。

 类似资料:
  • 我已经创建了一个JFrame,里面有一个JTable,我可以在单元格上写信息。我可以单击Save JMenuItem Save并将信息写入txt文件。然而,当我试图读取文件并将其返回到表中时,我面临三个问题。 JTable由30行组成。当代码读取txt文件时,在第30行下面添加行。是否有办法从第一行而不是第31行开始填充输入?--已解决 数据写入不正确。所有这些都写在第一列——已解决 如何去掉“n

  • 本文向大家介绍Java读取txt文件和写入txt文件的简单实例,包括了Java读取txt文件和写入txt文件的简单实例的使用技巧和注意事项,需要的朋友参考一下 写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂! 以上这篇Java读取txt文件和写入txt文件的简单实例就是小编分享给大家的全部内容了,希望能给

  • 问题内容: 如何将一小段文字写入文件?我已经使用Google搜索了3-4多个小时,但无法找到具体方法。 有很多论据,我不知道该如何使用。 当您只想在文件中写一个名字和几个数字时,最容易使用的功能是什么? 编辑:添加了一段我的代码。 问题答案:

  • 问题内容: 我想创建一个简单的日志系统,该日志系统使用Node.js将前一行之前的一行打印到txt文件中,但是我不知道Node.js中的文件系统如何工作。有人可以解释吗? 问题答案: 将数据插入文本文件的中间不是一件容易的事。如果可能,应将其附加到文件末尾。 将数据追加到一些文本文件的最简单方法是使用来自模块的内置函数: 但是,如果您想多次将数据写入日志文件,那么最好改用function: 每次您

  • 问题内容: 我正在研究一个Java程序,该程序逐行读取文本文件,每个文本文件都有一个数字,将每个数字都将其扔到数组中,然后尝试使用插入排序对数组进行排序。我需要有关程序读取文本文件的帮助。 我收到以下错误消息: 我的“ src”,“ bin”和主项目文件夹中有.txt文件的副本,但仍找不到该文件。我正在使用Eclipse。 问题答案: 你必须把文件扩展名放在这里

  • 我正在试着阅读我的文件的每一行,其中包含一个用户名列表,并用它创建一个登录系统。我正在尝试实现一个基本的登录系统,它的用户名存储在.txt文件中,但我的代码不工作,我不知道为什么。我认为问题出在检查用户名的循环中。 这是我的代码,但它不起作用,只是打印总是失败: 有什么想法吗?