C++ Kirish oqimi (std::istream)
C++ istream klassi turli xil kirish manbalaridan ma'lumotlarni o'qish uchun funksiyalar va operatorlar to'plamini taqdim etadi.
istream sinfini ishlatishdan oldin dasturimizga <iostream> sarlavhasini kiritishimiz kerak.
#include <iostream>
istream yordamida konsoldan ma'lumotlarni o'qish uchun cin ob'ektini >> chiqarish operatori bilan ishlatishingiz mumkin. Mana bir misol:
#include <iostream>
using namespace std;
int main() {
int entered_number;
cout << "Enter an integer: ";
// konsoldan ma'lumotlarni o'qish
cin >> entered_number;
cout << "You entered: " << entered_number << endl;
return 0;
}
Chiqish
Enter an integer: 3
You entered: 3
Ushbu misolda cin klaviaturadan ma'lumotlarni o'qiydigan standart kirish oqimini ifodalaydi. Biz >> operatoridan foydalanuvchi ma'lumotlarini ajratib olish va uni raqam o'zgaruvchisida saqlash uchun foydalanamiz.
istream sinfining get() funksiyasi birinchi navbatda kirish oqimidan individual belgilarni o'qish uchun ishlatiladi.
Asosiy xususiyatlar
Belgilarni o'qish: u kirish oqimidan keyingi belgini o'qiydi va oqimning ichki joylashuvi ko'rsatkichini oldinga siljitadi.
Bitta belgi: >> operatoridan farqli o'laroq, get() belgilarni bo'shliqlar, yorliqlar va yangi qator belgilarini o'z ichiga olgan holda o'qiydi.
Belgilarni chiqarish: Siz undan char tipidagi oʻzgaruvchilarga belgilarni chiqarish yoki ularni belgilar massivlarida (C-satrlari) saqlash uchun foydalanishingiz mumkin.
Delimiter Control: Bu cheklovchi belgini ixtiyoriy parametr sifatida belgilash imkonini beradi. Ajratuvchini ko'rsatganingizda, get() bu ajratuvchiga duch kelganida belgilarni o'qishni to'xtatadi. Bu so'zlarni yoki satrlarni o'qish uchun foydalidir.
#include <iostream>
using namespace std;
int main() {
char ch;
cout << "Enter a sentence: ";
// qahramonni birma-bir o'qing
// yangi qator paydo bo'lguncha
while (cin.get(ch) && ch != '\n') {
cout << ch;
}
return 0;
}
Chiqish
Enter a sentence: Hello World
Hello World
Bu erda biz foydalanuvchidan bitta belgini o'qish uchun cin.get() dan foydalandik.
Kodning ushbu qismiga e'tibor bering:
while (cin.get(ch) && ch != '\n') {
cout << ch;
}
Loop standart kiritishdan yangi satr belgisi paydo bo'lgunga qadar belgilarni birma-bir o'qiydi. Har bir iteratsiyada u o'qilgan belgini darhol chop etadi.
istream da getline() funksiyasi ko‘rsatilgan kirish oqimidan matn qatorini o‘qish uchun ishlatiladi (masalan, standart kiritish uchun cin ).
Asosiy xususiyatlar
O'qish qatorlari: get() funksiyasidan farqli o'laroq, getline() matnning butun satrlarini belgilangan chegara yoki satr oxirigacha o'qiydi.
Ajratuvchini boshqarish: Siz chiziq oxirini ko'rsatadigan chegara belgisini belgilashingiz mumkin. Bu sizga bir necha qator matnlarni ketma-ket o'qish imkonini beradi.
Bufer hajmi: Bufer to'lib ketishining oldini olish va uzun satrlarni chiroyli tarzda o'qish uchun maksimal belgilar sonini belgilash uchun ixtiyoriy parametrni qabul qiladi.
#include <iostream>
using namespace std;
int main() {
string line;
cout << "Enter a line of text: ";
// foydalanuvchi kiritgan qatorni o'qish
getline(cin, line);
cout << "You entered: " << line << endl;
return 0;
}
Chiqish
Enter a line of text: Hello
You entered: Hello
ignore() funksiyasi kirish oqimidagi belgilarning berilgan uzunligini o‘tkazib yuborish uchun ishlatiladi.
#include <iostream>
using namespace std;
int main() {
cout << "Enter a line of text: ";
char ch;
// standart kiritishdan keyingi 5 ta belgiga e'tibor bermang
cin.ignore(5);
// oltinchi belgini o'qing va qiymatni chop eting
if (cin.get(ch)) {
cout << "Next character after ignoring 5 characters: " << ch << endl;
}
return 0;
}
Chiqish
Enter a line of text: 12345678
Next character after ignoring 5 characters: 6
Bu erda cin.ignore(5); kirish oqimiga foydalanuvchi kiritgan keyingi beshta belgini e'tiborsiz qoldirishni buyuradi.
Shundan so'ng, if holati cin.get(ch) oldingi beshtasi e'tiborga olinmaganidan keyin kirish oqimidan keyingi belgini o'qishga harakat qiladi. Agar muvaffaqiyatli bo'lsa, u ularni ch o'zgaruvchisida saqlaydi.