You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++文件读写问题求助:读取随机0/1文件并判断状态

解决文件读取与0/1判断的问题

嘿,我看到你在大学项目里遇到了文件读取和内容判断的问题,咱们来一步步把它搞定!

你的代码里的核心问题

  • 你用了ofstream来尝试读取文件,但ofstream是只写的流,读取文件必须用ifstream。
  • 当前的判断逻辑只是检查文件是否能打开,完全没有读取文件里的0或1数值,自然没法实现你要的“判断房间是否被占用”的功能。
  • 打开文件的判断方式也不对,open()返回的是void,不能直接和1比较,应该用流对象本身的状态来判断(比如if (infile))。

修正后的完整代码

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

int main () {
    // 生成随机0或1并写入文件
    int randu;
    srand((int)time(0)); // 初始化随机数种子
    ofstream room_out;
    room_out.open("room0");
    if (room_out) { // 检查写入文件是否成功打开
        randu = rand() % 2;
        room_out << randu;
        room_out.close();
    } else {
        cout << "无法创建/写入文件!" << endl;
        return 1;
    }

    // 读取文件内容并判断
    int room_status;
    ifstream room_in;
    room_in.open("room0");
    if (room_in >> room_status) { // 读取文件里的数值并检查是否成功
        if (room_status == 1) {
            cout << "the room is occupied";
        } else {
            cout << "the room is free";
        }
        room_in.close();
    } else {
        cout << "无法读取文件!" << endl;
        return 1;
    }

    return 0;
}

关键修改点说明

  • 拆分了写入和读取的流:用ofstream room_out负责写入文件,ifstream room_in负责读取文件,各司其职。
  • 增加了文件操作的错误检查:不管是写入还是读取,都先判断流是否正常打开,避免出现异常情况。
  • 真正读取了文件中的数值:用room_in >> room_status把文件里的0或1读到变量里,再通过if-else判断状态,这才是你要的核心功能。
  • 修正了随机数的生成:把rand() % 2赋值给randu再写入,逻辑更清晰(当然直接写room_out << rand()%2也没问题,但这样方便调试)。

内容的提问来源于stack exchange,提问作者frawg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:43:22