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循环,却在读入时崩溃了。为什么???