萌新求助,关于ifstream读取崩溃
查看原帖
萌新求助,关于ifstream读取崩溃
66287
樱初音斗橡皮楼主2021/1/17 22:24

RT,我写了一段程序:

std::cin >> account;
std::cout << "Reading catalog..." << std::endl;
catalog_in.open("catalog.dat");
if (!catalog_in.is_open()) {
	catalog_in.close();
	catalog_out.open("catalog.dat");
	catalog_out.close();
} else {
	catalog_in.close();
	char tmp[100];
	std::string cur_ac;
	ull cur_psw;
	FILE *in = fopen("catalog.dat", "r");
	while (fscanf("%s %llu", tmp, cur_psw) != -1) {
		cur_ac = tmp;
		ac_list.insert(std::make_pair(cur_ac, cur_psw));
	}
}

这段程序可以正常地输入。(catalog_in是一个ifstream的对象)

然而,这段代码却不能:

std::cin >> account;
catalog_in.open("catalog.dat");
if (!catalog_in.is_open()) {
	catalog_in.close();
	std::cout << "There is no catalog at the moment. Creating one..." << std::endl;
	catalog_out.open("catalog.dat");
	catalog_out.close();
} else {
	std::string cur_ac;
	ull cur_psw;
	while (catalog_in.good()) {
		catalog_in >> cur_ac >> cur_psw;
		ac_list.insert(std::make_pair(cur_ac, cur_psw));
	}
	catalog_in.close();
}

实际上,这段代码进入了while循环,却在读入时崩溃了。为什么???

2021/1/17 22:24
加载中...