C++ fayllarga ishlov berish va ularni boshqarish uchun ifstream


getline(input, state, '#')



Download 0,73 Mb.
bet5/7
Sana20.06.2022
Hajmi0,73 Mb.
#679296
1   2   3   4   5   6   7
Bog'liq
8-hafta mashg\'uloti dasturlashdan

getline(input, state, '#') charilishi (23-qator) orqali, shtat massiviga belgilar # belgisiga yoki fayl so`ngiga kelgunicha o`qiladi.
Ko`p qo`llaniluvchi, qolgan ikkita funksiyalar – get va put. Kiritish ob’yektida bitta belgini o`qish uchun get funksiyasini, bitta belgini yozish uchun esa, put funksiyasini chaqirishimiz mumkin.
get funksiyasining ikki xil versiyasi mavjud:
char get() // Belgi qaytarish
ifstream* get(char& ch) // Belgini ch ga o`qish
Birinchi versiya kiritish ob’yektidan belgini qaytaradi. Ikkinchi versiyasi belgili argumentning havolasini yuboradi, belgini kiritish ob’yektidan o`qiydi va uni ch ga yozadi. Shuningdek bu funksiya, kiritish (input) ob’yekti ishlatganda, unga havolani yuboradi.
put funksiyasining sarlavha qismi quyidagicha:
void put(charch)
U ma’lum bir belgini chiqarish (output) ob’yektiga yozadi.
8.7-kodli ro`yxatda bu ikki funksiyadan foydalanishga doir misol berilgan. Dastur foydalanuvchidan faylni kiritishni so`raydi va uni yangi faylga nusxalaydi.
8.7-kodli ro`yxat. CopyFile.cpp
1 #include
2 #include
3 #include
4 using namespace std;
5
6 int main()
7 {
8 // Manbaa faylni kiritish
9 cout << " Manbaa fayl nomini kiriting: ";
10 string kirishFaylNomi;
11 cin >> kirishFaylNomi;
12
13 // Ko`zlangan faylni kiritish
14 cout << "Ko`zlangan fayl nomini kiriting: ";
15 string chiqishFaylNomi;
16 cin >> chiqishFaylNomi;
17
18 // Kirish va chiqish oqimlarini hosil qilish
19 ifstream input(kirishFaylNomi.c_str());
20 ofstream output(chiqishFaylNomi.c_str());
21
22 if(input.fail())
23 {
24 cout << kirishFaylNomi << " mavjud emas!"<< endl;
25 cout << "Dasturdan chiqish..."<< endl;
26 return 0;
27 }
28
29 char ch = input.get();
30 while(!input.eof()) // Agar fayl so`ngi bo`lmasa davom etish
31 {
32 output.put(ch);
33 ch = input.get(); // Keyingi belgini o`qish
34 }
35
36 input.close();
37 output.close();
38
39 cout << "\nNusxalandi!"<< endl;
40
41 return 0;
42 }
Natija:

Manbaa fayl nomini kiriting: c:\example\CopyFile.cpp
Ko`zlangan fayl nomini kiriting: c:\example\temp.txt
Nusxalandi!

Dastur foydalanuvchini mavjud manbaa fayl nomini (11qator) va ko`zlangan fayl nomini (16-qator) kiritishga undaydi. 19-qatorda kirishFaylNomi uchun kiritish ob’yekti – input yaratiladi va 20-qatorda chiqishFaylNomi uchun chiqarish ob’yekti – output hosil qilinadi. Fayl nomlari C-satrlar bo`lishi lozim. kirishFaylNomi.c_str() kirishFaylNomi dan C-satr qaytaradi.


22-27-qatorlar kiritish fayli mavjudligi yoki yo`qligini tekshiradi. 30-34-satrlar get funksiyasidan foydalangan paytda qaytadan belgilarni o`qiydi va put funksiyasidan foydalanib, belgilarni chiquvchi faylga yozadi.
Faraz qilaylik, 29-34-qatorlar quyidagi kod bilan almashtirilgan:
while(!input.eof()) // Agar fayl so`ngi bo`lmasa davom etish
{
output.put(input.get());
}
Nima yuz beradi? Agar dasturimizni ushbu yangi kod bilan ishga tushirsak, yangi fayl originaliga nisbatan bir bayt kattaroq bo`lganini ko`rishimiz mumkin. Ya’ni, yangi fayl o`zining so`ngida qo`shimcha, keraksiz belgiga ega bo`lib qoladi. Buning sababi shundaki, kiruvchi fayldan input.get() dan foydalangan holda, oxirgi belgi o`qilganda, input.eof() false ko`rinishga o`tadi. So`ngra dastur boshqa belgini o`qishga undaydi; input.eof() endi true ga aylanadi. Shunday bo`lsada, ortiqcha keraksiz belgi chiquvchi faylga yuborilib bo`lgan bo`ladi.
8.7-kodli ro`yxatdagi to`g`ri tuzilgan dastur belgini o`qiydi (29-qator) va eof() ni tekshiradi (30-qator). Agar eof() true bo`lsa, belgi output ga yozilmaydi, boshqa hollarda u nusxalanadi (32-qator). Bu jarayon eof() funksiyasi true qiymat qaytarguniga qadar davom etadi.


Download 0,73 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish