tellg() metodi. Ba'zi holatda qancha miqdordagi ma’lumot o'qilganligi haqida ma'lumot olish kerak bo’ladi. Bunga tellg () metodi yordam beradi:
#include #include using namespace std;
//@TBCLbot
int main()
{
ifstream file ("d:\\accounts.txt");
string s;
getline(file, s);
cout<<"O'qilgan bayt: " <}
Bu int tipidagi qiymatni qaytaradi, bu esa qancha baytda o’qilganligini ko'rsatadi. Fayl hajmini olish uchun u seekg() metodi bilan birgalikda ishlatilishi mumkin:
#include
#include using namespace std;
//@TBCLbot
int main()
{
ifstream file ("d:\\accounts.txt");
string s;
file.seekg(0,ios_base::end);
cout<<"O'qilgan bayt: " <}
66. C++da ifstream sinfi fayllari ishlashda get() getline() metodlari. (Javob 67-savolda) 67. C++da char[] tipidagi ma’lumotlarni fayllardan o’qish. Agar sizga char[] belgilar qatorini o'qish kerak bo'lsa, u holda get() yoki getline() ni xuddi shunday metod sifatida o'qish mumkin:
#include #include using namespace std;
//@TBCLbot
int main()
{
ifstream file ("d:\\accounts.txt");
int n = 10;
//O’qish uchun bufer yaratish
char* buffer = new char[n+1];
buffer[n]=0;
//n ta simvolni o’qish
file.get(buffer,n);
//Yoki birinchi bo’sh joygacha (probelgacha) o’qish
file.getline(buffer,n,' ');
//o’qilgan belgilarni chop etish
cout << buffer;
//buferni bo’shatish
delete [] buffer;
}
68. C++da fayllarni o’qishda close(), eof(), seekg() metodlari. Matnli faylga ma'lumot yozish
#include #include int main ()
{
ofstream yozish; // faylga yozish oqimini hosil qilish
yozish.open("namuna.txt");
// yangi namuna.txt nomli fayl hosil qilinadi.
// agar namuna.txt fayli oldindan bo'lsa,
// uning eski qiymatlari o'chiriladi
// va yangi fayl hosil qilinadi
yozish << "Matnli faylga ma'lumot yozish" << endl;
yozish << "Juda oson!" << endl;
yozish.close(); // faylni yopish
system ("pause");
return 0;
}
Fayldan matni o'qish
#include #include #include int main ()
{
ifstream oqish; // fayldan o'qish oqimini hosil qilish
string satr;
oqish.open("namuna.txt");
// faylni ochishda xatolik sodir bo'lsa
if (!oqish.is_open())
{
cout << "Faylni ochishda xatolik sodir bo'ldi." << endl;
exit(1); // dasturni tugatish
}
while (!oqish.eof())
{
// fayldan o'qish
getline(oqish, satr);
// ekranga chiqarish
cout << satr << endl;
}
// namuna.txt fayli bilan oqish oqimi aloqasini uzish
oqish.close();
system (“pause”);
return 0;
}
Fayl ustida o'qish yoki yozish amalini bajarib bo'lgandan song, faylni yopish kerak
bo'ladi. Faylni yopish uchun close funksiyadi ishlatilad i.
Masalan:
yozish.close();
oqish.close();
Bu int tipidagi qiymatni qaytaradi, bu esa qancha baytda o’qilganligini ko'rsatadi. Fayl hajmini olish uchun u seekg() metodi bilan birgalikda ishlatilishi mumkin:
#include #include using namespace std;
//@TBCLbot
int main()
{
ifstream file ("d:\\accounts.txt");
string s;
file.seekg(0,ios_base::end);
cout<<"O'qilgan bayt: " <} istream sinfi funksiyalari
istream& seekg ( streampos pos );
istream& seekg ( streamoff off, ios_base::seekdir dir );;
oqish oqimi ko'rsatkichini o'rnatish (siljit ish).
pos - oqim buferining yangi pozitsiyasi.
dir parametri quyidagilardan birini qabul qilishi mumkin:
Qiymat Izoh
ios:beg oqimning boshlanishi
ios::cur oqimning joriy xolari
ios::end oqim oxiri
long tellg();
o'qish oqimining joriy xolatini (pozitsiyasi) aniqlash.
ostream sinfi funksiyalari
ostream& seekp ( streampos pos );
ostream& seekp ( streamoff off, ios_base::seekdir dir );
yozish oqimi o'rnini (pozitsiyasini) o'rnatish.
pos - oqim buferining yangi pozitsiyasi
dir parametri beg, cur, end qiymatlaridan birini qabul qilishi mumkin.
long tellp() - yozish oqimining kelgan joyini aniqlash.