PDA

View Full Version : نحوه جستجوهای چندگانه در فایل تصادفی؟



R_Rajaee_Rad
سه شنبه 31 تیر 1393, 05:30 صبح
سلام. در فایلهای تصادفی اگر بخوایم با چند مورد در فایل(کد کاربری-کد ملی-نام و... ) عمل جستجو رو انجام بدیم باید چکار کرد؟ این تکه کد فقط موقعی جواب میده که کد اصلی (کد کاربری) رو وارد کنی ولی برای کد ملی و... جواب نمیده


fp.seekg(sizeof(struct customer) * code_meli, ios::beg);

rahnema1
سه شنبه 31 تیر 1393, 18:30 عصر
یک روش اینکه رکورد ها را تک تک بخونید و بعد مقابسه انجام بشه

R_Rajaee_Rad
چهارشنبه 01 مرداد 1393, 10:04 صبح
یک روش اینکه رکورد ها را تک تک بخونید و بعد مقابسه انجام بشه
میشه یه نمونه کد بزارید؟ ممنون

rahnema1
چهارشنبه 01 مرداد 1393, 10:39 صبح
میشه یه نمونه کد بزارید؟ ممنون
اگه شما نمونه کد میذاشتید بهتر میتونستیم بگیم چیکار کنید

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct customer{
string code_karbari;
string code_meli;
string name;
friend ifstream& operator>>(ifstream& stream, customer& cst)
{
stream>> cst.code_karbari>> cst.code_meli>> cst.name;
return stream;
}
friend ostream& operator<<(ostream& stream, customer& cst)
{
stream<< cst.code_karbari<<"|"<< cst.code_meli<<"|"<< cst.name<<endl;
return stream;
}
};
int main()
{
customer a_customer;
ifstream fdata("database.txt");
while(fdata >> a_customer)
if (a_customer.code_karbari=="23456" && a_customer.name=="SAFARI")
cout<<a_customer;
}

این هم محتوای database.txt

234323462 57657657 fdhgfh
23456 678678768 SAFARI

R_Rajaee_Rad
چهارشنبه 01 مرداد 1393, 12:19 عصر
اینم کد منه

int code_meli; int id_cust;
customer cust;
system("cls");
cout << "Enter Code Meli to Search:";
cin >> num;
fstream fp("st.dat", ios::out | ios::in | ios::binary);
fp.seekg(sizeof(struct customer) * num, ios::beg);
int r = 2;
while (fp.read((char *)& cust, sizeof(struct customer)))
{
gotoxy(0, r);
cout << cust.family;




}
fp.close();
فایل st.dat هم به صورت باینری استفاده میشه
وقتی که در متغیر num شماره مشتری وارد بشه همه چی درسته ولی اگر بخوام با کد ملی جستجو کنم جواب نمیده

rahnema1
چهارشنبه 01 مرداد 1393, 13:32 عصر
اینم کد منه

int code_meli; int id_cust;
customer cust;
system("cls");
cout << "Enter Code Meli to Search:";
cin >> num;
fstream fp("st.dat", ios::out | ios::in | ios::binary);
fp.seekg(sizeof(struct customer) * num, ios::beg);
int r = 2;
while (fp.read((char *)& cust, sizeof(struct customer)))
{
gotoxy(0, r);
cout << cust.family;




}
fp.close();
فایل st.dat هم به صورت باینری استفاده میشه
وقتی که در متغیر num شماره مشتری وارد بشه همه چی درسته ولی اگر بخوام با کد ملی جستجو کنم جواب نمیده

فکر کنم seekg لازم نباشه

while (fp.read((char *)& cust, sizeof(struct customer)))
{
if (cust.code_meli==num)
{
gotoxy(0, r);
cout << cust.family;
}