函数无法在C ++中读取和打印文件内容

阿莱姆·图兹拉克(Alem Tuzlak)

大家好,我正在一个rpg游戏的学校项目中工作。我创建了一个load_game函数,该函数应该通过特定的文件,检查文件是否具有用户输入的ID,并将特定的字符统计信息加载到全局变量中。问题是我制作了一个函数来打印文件的内容,以便用户可以看到他们的选项,但是根本不打印任何内容,我制作了一个new_player函数,该函数用新的播放器填充相同的文件,并且可以正常工作。当我将文件更改为另一个文件并手动写入该文件时,它将起作用。这是代码:

void load_game()
{
    bool loading = true;
    do{
        ifstream in_stream("Players.txt");
        ofstream out_stream("Players.txt");
        cout << "      The last son of Allheaven                " << endl;
        cout << "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+" << endl;
        char ch;
        in_stream.clear();
        in_stream.seekg(0, in_stream.beg);
        while (in_stream.get(ch))
        {
            cout << ch;
        }
        cout << "         Enter -1 to return to main menu                      " << endl;
        cout << "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+" << endl;
        cout << endl << "Enter a number to access one of the above options: ";
        in_stream.clear();
        in_stream.seekg(0, in_stream.beg);
        int choice;
        cin >> choice;
        while (in_stream >> ID >> Name >> Class >> HP >> Mana >> ATK >> ability_dmg >> Defense >> magic_resist >> player_exp >> player_level)
        {
            if (choice == ID)
            {
                /*game_start();*/
                loading = false;
                break;
            }
            else if (choice == -1)
            {
                system("cls");
                main_menu();
            }
            else if (in_stream.eof())
            {
                in_stream.clear();
                in_stream.seekg(0, in_stream.beg);
                cout << endl << "Error! Invalid ID !" << endl;

            }
        }
        in_stream.close();
        out_stream.close();
    } while (loading);
}
一些程序员哥们

一个主要的问题是您两次打开相同的文件一次用于输入,一次用于输出,这将截断文件(如果存在)。因此,在创建时,out_stream您将有效地删除文件中的所有数据。

如果要读取和写入同一文件,请使用std::iofstream,以读/写模式其打开。但是对于文本文件而言,很难在文件中编辑数据,因此我建议您为输出打开一个临时文件,并在完成后将临时文件重命名为实际文件。

或者在您的情况下,为什么根本没有输出文件?您实际上不在任何地方使用它吗?它所做的只是截断您要读取的文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中读取和打印txt文件的内容

来自分类Dev

从C中的文件读取和打印时输出奇数

来自分类Dev

将文件内容读取到c中的数组时,将打印多余的字符

来自分类Dev

用C读取和打印文件

来自分类Dev

fscanf函数无法在c中读取

来自分类Dev

在 c 中读取和打印矩阵

来自分类Dev

用结构和txt文件在C中读取函数

来自分类Dev

C读取文件和打印缓冲区

来自分类Dev

从Perl中的文件读取时,哈希无法正确打印

来自分类Dev

无法使用C#函数从Json文件读取多个值

来自分类Dev

从文件中精确打印和扫描(C)

来自分类Dev

从文件中精确打印和扫描(C)

来自分类Dev

无法使用熊猫从特定的.CSV文件中读取内容

来自分类Dev

为什么getline()无法从文件中读取任何内容?

来自分类Dev

每次我从C中的输入文件读取'\ n'时,都无法遍历函数

来自分类Dev

nodejs:无法读取文件内容

来自分类Dev

在C中读取和打印字符串

来自分类Dev

从C中的文件读取和写入

来自分类Dev

在C ++中从文件读取整数和字符

来自分类Dev

从C中的文件读取和输出整数

来自分类Dev

C++ 数组和从文件中读取

来自分类Dev

在 C 中读取文件和 CryptUnprotectData

来自分类Dev

C ++中的函数重载无法正常工作

来自分类Dev

无法从c ++中的函数捕获异常

来自分类Dev

无法在汇编中链接C ++函数

来自分类Dev

无法从c ++中的函数捕获异常

来自分类Dev

C ++中的函数重载无法正常工作

来自分类Dev

C#和Azure函数-无法识别函数

来自分类Dev

Bash:在文件B中搜索文件A的内容并在文件C中搜索文件A的打印行