Мазмунга өтүү

Файлдар жана агымдар: тереңирээк

Сабактын башталышы

Файлдар жана агымдар: тереңирээк

fstream, форматтоо, экилик жана тексттик режим, каталар абалы

Негизги идея: C++ тилинде киргизүү жана чыгаруунун ар кандай булагы — клавиатура, экран, дисктеги файл, атүгүл эстутумдагы сап да — бир эле абстракция менен сүрөттөлөт: агым менен. Агымдарды түшүнгөндөн кийин файлды окуу std::cin окугандан дээрлик айырмаланбайт. Бул тема сизди баштапкы "ач, оку, жап" рецептинен алдыга алып чыгып, чыныгы программаларда маанилүү болгон майда-чүйдөлөрдү ачат: ачуу режимдери, чыгарууну форматтоо, тексттик жана экилик киргизүү-чыгаруунун айырмасы жана операция чын эле ийгиликтүү болгонун кантип текшерүү.
Теманын аягында сиз мыналарды жасай аласыз:
  • тапшырмага туура агым түрүн жана ачуу режимин тандоо,
  • файлдарды туура цикл идиомасы менен ишенимдүү окуу,
  • чыгаруунун көрүнүшүн манипуляторлор менен башкаруу (setw, setprecision, fixed, hex, ...),
  • экилик маалыматты окуу жана жазуу жана тексттик режим качан сизди алдап коёрун билүү,
  • каталар абалын (good, eof, fail, bad) текшерүү жана каатадан кийин калыбына келүү.

1. Агымдар үй-бүлөсү

Агым — бул сиздин программаңыз менен кайсы бир түзмөктүн ортосундагы байттардын агып жаткан ырааттуулугун көрсөткөн объект. Стандарттык китепкана <iostream>, <fstream> жана <sstream> баш файлдарында жарыяланган кичине иерархияны берет:

  • std::istream — андан окуй турган негизги түр (std::cin — ошолордун бири).
  • std::ostream — ага жаза турган негизги түр (std::cout, std::cerr).
  • std::ifstream — киргизүү файл агымы. std::ofstream — чыгаруу файл агымы. std::fstream — экөөнү тең жасай алган файл агымы.
  • std::istringstream / std::ostringstream — эстутумдагы саптын үстүндөгү агымдар, текстти талдоо жана куруу үчүн эң ыңгайлуу.

Пайдасы бирдейликте: std::istream& кабыл алган каалаган функция std::cin, std::ifstream же std::istringstream дегендердин баарын кубануу менен кабыл алат. Талдоо кодун бир жолу жазыңыз — ал файлдар, консоль жана тест саптары менен иштейт.

std::ios_base std::istream std::ostream ifstream fstream ofstream
fstream эки жактан тең мурас алат, ошондуктан окуй да, жаза да алат. Негизги түрлөргө жазылган каалаган код ар бир конкреттүү агым менен иштейт.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө