我試圖從文件讀取我的數據庫。從文件C++讀取數據庫
這裏是我的save_base方法:
void data_base::save_base()
{
fstream file;
file.open("base.dat", ios::in | ios::out | ios::trunc);
if(file.good()==true) {
node *p = new node();
p=first;
while(p) {
file << p->content->connect() << ";" << "\n";
p=p->next;
}
file.close();
}else{
cout << "Err - opening file." << endl;
}
}
連接方法:
string product::connect() {
ostringstream do_string;
do_string << lp;
string new_lp = do_string.str();
ostringstream do_string1;
do_string1 << count;
string new_count = do_string1.str();
ostringstream do_string2;
do_string2 << prize;
string new_prize = do_string2.str();
ostringstream do_string3;
do_string3 << vat;
string new_vat = do_string3.str();
string connected = type + ";" + new_lp + ";" + name + ";" + new_count + ";" + unit + ";" + new_prize + ";" + new_vat;
return connected;
}
和read_base方法:
void data_base::read_base()
{
fstream file;
file.open("base.dat", ios::in);
if(file.good()==true)
{
char data_row[50];
int i=1;
while(!file.eof()) {
file.getline(data_row,100);
string data_content[50];
int j = 0;
char *buff;
buff = strtok (data_row,";");
while (buff != NULL) {
data_content[j] = buff;
buff = strtok (NULL, ";");
j++;
}
string type = data_content[0];
int lp;
istringstream iss1(data_content[1]);
iss1 >> lp;
double count;
istringstream iss2(data_content[3]);
iss2 >> count;
double prize;
istringstream iss3(data_content[5]);
iss3 >> prize;
double vat;
istringstream iss4(data_content[5]);
iss4 >> vat;
// Sprawdzamy typ obiektu zapisanego w danym wierszu pliku
if(type == "product")
{
product new_prod(lp, data_content[2], count, data_content[4], prize, vat);
product *new_product = new product(new_prod);
this->add(new_product);
}
i++;
}
file.close();
}else{
cout << "Err opening file." << endl;
}
}
我加入一些產品數據庫,它工作正常。即使保存到文件也很好。但主要問題是當我試圖從文件讀取數據庫。從文件讀取數據庫工作正常,但最終,應用程序不會自行結束。我認爲還有一些緩衝需要結束。但我不知道它們是靠近哪個或靠近的。
所以,當你看着你的調試器,如果應用程序沒有結束,應用程序停止在哪裏? – Useless
聽起來像你的應用程序被困在無盡的循環中。在調試器中啓動它,當你滿意時,它處於卡住狀態,「中斷」應用程序的執行(Debug Menu-> Break All或類似的東西)。 –
調用堆棧: #0 7755000D \t NTDLL LdrFindResource_U()(C:\ WINDOWS \ SYSTEM32 \ ntdll.dll中:??)! #1 775DF896 \t NTDLL RtlQueryTimeZoneInformation()(C:\ WINDOWS \ SYSTEM32 \ NTDLL。 dll:??) #2 74B4F499 \t ?? ()(??:??) #3 ?? \t ?? ()(??:??) –