【问题标题】:0x6efcc4 output in the txt filetxt 文件中的 0x6efcc4 输出
【发布时间】:2020-05-17 14:02:32
【问题描述】:

我是一个新奇的学生。我必须编写一个控制台程序,该程序从用户输入一个数字(将来将是一个数组,但现在没关系),将它保存在一个 txt 文件中,当你关闭程序并重新启动它时,它将您之前保存在 txt 文件中的数字加载到另一个变量中(同样,将来它将成为一个数组)。想象一下,它就像一个图书馆员用来保存其所存储书籍的所有数据的软件。我想过制作两个变量,一个 ifstream 和另一个 ofstream,都引用同一个 txt 文件,这样我就可以在同一个文件上读写,而无需外部变量。我知道您也可以将 fstream 与 :in 和 :out 一起使用(类似这样),但我读到您必须重置程序开始读取的点,我相信这对我的程序来说太复杂和不必要了。到目前为止,我尝试输入一个数字并检查它是否被保存,但 0x6efcc4 是我得到的唯一输出,或者我输入“0”、“143”、“dog”......无论如何(输入是一个变量字符串类型),我不知道为什么。我将发布两个屏幕,包括我正在使用的代码和 txt 文件:

#include <iostream>
#include <fstream>

using namespace std;

const int DIN = 2;

int main()
{
    ofstream saving("save.txt");
    ifstream loading("save.txt");
    string input[DIM];

    if (! saving || !loading)
    {
        cout << "One of the files did not open correctly" << endl;
        return -1;
    }
    else
    {
        cin >> input[1];
        saving << input;
        saving.close();
        loading.close();
    }
    return 0;
}

实际上,我注意到我只能发布一张图片,或者我只是看不到发布更多图片的选项。 txt 文件实际上是一个空白 txt 文件,其名称与代码中的完全一样,在第一行中只写了一次 0x6efcc4

【问题讨论】:

  • 请不要发布您的代码截图。而是发布代码。
  • 请将代码作为问题的一部分。外部链接变得陈旧,图像不允许我们复制和粘贴代码来检查它。

标签: c++ console-application fstream ifstream


【解决方案1】:

那你为什么输入input[1]却输出input?这就是你的错误的原因,试试这个saving &lt;&lt; input[1];

您在输出文件中看到的是input 数组的地址,而您想要的是input 数组的内容。

另外,我强烈建议不要同时打开文件以进行输入和输出。当您需要阅读某些内容时打开它以供输入,并在完成后关闭它。同样,当你想写东西时打开它输出,写完后再次关闭它。

【讨论】:

  • 嘿,你是对的,实际上这是一个愚蠢的错误:P 谢谢你的帮助。既然你让我注意到了,我也会改变打开/关闭的东西。再次感谢
【解决方案2】:

您应该再次查看cin &gt;&gt; input 语句中的代码。

您的代码在数组元素 2 [1] 中定义了用户输入的内容。

如果您使用以下内容,您将摆脱错误:

cin >> input[1];

但是空格后面的所有文字都会被省略。因此,更好地使用:

std::getline(std::cin, input[1]);

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多