4.Turlarni uzgartirish funksiyalari
Satrlar bilan ishlashda satr kurinishida berilgan sonlarni, son turlaridagi kiymatlarga aylantirish yoki teskari amalni bajarishga gugri keladi. C++ tilining «strlib.h» kutubxonasida bu amallarni bajaruvchi funksiyalar tuplami mavjud. Kuyida nisbatan kup ishlatiladigan funksiyalar tavsifi keltiripgan
atoi( ) funksiyasining sintaksisi
int atoi(const char*ptr);
kurinishga ega bulib, ptr kursatuvchi ASCIIZ-satrni int turidagi
songa utkazishni amalga oshiradi. Funksiya satr boshidan belgilarni
songa aylantira boshlaydi va satr oxirigacha yoki birinchi rakam
bulmagan belgigacha ishlaydi. Agar satr boshida songa aylantirish
mumkin bulmagan belgi bulsa, funksiya 0 kiymatini kaytaradi.
Lekin, shunga e’tibor berish kerakki, “0” satri uchun xam funksiya O
kaytaradi. Agar satrni songa aylantirishdagi xosil bulgan son int
chegarasidan chikib ketsa, sonning kichik ikki bayti natija sifatida
kaytariladi.
Misol uchun
#include
#include
#include
using namespace std;
int main()
{
char str[]="32secund";
int i=atoi(str);
cout<
return 0;
}
programmasining natijasi sifatida ekranga 32 sonini chop etadi.
Agar str kiymati ” 100000” bulsa, ekranga -31072 kiymati chop eti-
ladi, chunki 100000 soning ichki kurinishi 0x186A0 va uning oxirgi
ikki baytidagi 0x86A0 kiymati 31072 sonining kushimcha koddagi
kurinishidir.
atol() funksiyasi xudsi atoi() funksiyasidek amal kiladi, fakat
funksiya natijasi long turida buladi. Agar xosil bulgan son kiy
mati long chegarasiga sigmasa, funksiya kutilmagan kiymatni kayta
radi.
atof() funksiyasi e’loni
double atof (const char*ptr);
kurinishida bulib, ptr kursatuvchi ASCIIZ-satrni double turidagi
suzuvchi nuktali songa utkazishni amalga oshiradi. Satr suzuvchi
nuktali son formatida bulishi kerak.
Songa aylantirish birinchi formatga mos kelmaydigan belgi
uchraguncha yoki satr oxirigacha davom etadi.
strtod() funksiyasi atof() funksiyasidan farkli ravishda satrni
double turidagi songa utkazishda konvertatsiya jarayoni uzilgan
paytda aylantirish mumkin bulmagan birinchi belgi adresini xam
kaytaradi. Bu uz navbatida satrni xato kismini kayta ishlash
imkonini beradi.
strtod() funksiyasining sintaksisi
double strtod(const char *s, char **endptr);
kurinishga ega va endptr kursatkichi konvertatsiya kilinishi mumkin
bulmagan birinchi belgi adresi. Konvertatsiya kilinuvchi satrda xato
bulgan xolatni kursatuvchi misol:
#include
#include
#include
#include
using namespace std;
int main(int argc, char* argv[] )
{
char satr[]="3.14D15E+2";
char **kursatkich;
double x=strtod(satr,kursatkich);
cout<<"Konvertatsiya qilinuvchi satr:"<
cout<<"Konvertatsiya qilingan x soni:"<
cout<<"Konvertatsiya uzilgan satr ostisi:";
cout<<*kursatkich;
return 0;
}
Profamma bajarilishida x uzgaruvchi 3.14 sonini kabul
kiladi, kursatkich uzgaruvchisi satrdagi ‘D’ belgisining adresini
kursatadi. Ekranga kuyidagi satrlar ketma-ketligi chop etiladi:
Konvertatsiya qilinuvchi satr:3.14D15E+2
Konvertatsiya qilingan x soni:3.14
Konvertatsiya uzilgan satr ostisi:D15E+2
Nazorat savollar
1.Satr uzunligi qanday aniqlanadi?
2.Bir satrda boshqa satrga nusxa olish qanday amalga oshiriladi?
3.Satrni satr orasiga qo’shish qanday bo’ladi?
4.Satr qismini solishtirishga qanday amalga oshiriladi?
5.Satrdan qidirish funksiyalarini tushuntirib bering?
Foydalanilgan adabiyotlar.
U.O.Mallayev “S++ da dasturlash ” fanidan uslubiy qo‘llanma (1 qism.
Allamov O., Yusupov O. “C++ da dasturlash” fanidan tajriba ishlarini bajarish bo’yicha ko’rsatma.
http://www.cplusplus.com/doc/tutorial/pointers/
https://www.geeksforgeeks.org/pointers-c-examples/
Do'stlaringiz bilan baham: |