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
相关产品推荐
相关产品推荐

