Здравствуйте.
Наставьте студента на путь истинный.

В процессе изучения C++ (я не виноват

, программа такая: с нуля учат C++) возникли некоторые вопросы.
В чем разница между заголовками, к примеру, stdio.h , cstdio ?
У Шилдта читал, что это C и C++ стиль, но C++ потоки ввода-вывода - это iostream. Получается, что cstdio - это C++ обертка для C потоков stdin и stdout.
Тогда что и как лучше использовать/не_использовать?
Разъясните, пожалуйста, эту вещь.
В связи с этим возник еще один вопрос.
В одной из работ нужно было использовать посимвольный ввод с клавиатуры. На
http://www.cplusplus.com/ вычитал, что функции из conio.h, в частности getch(), лучше не использовать.
1) Почему этот заголовок лучше не использовать? Насколько понимаю, CONsole Input/Output - это windows-заголовок, а не заголовок стандартной библиотеки. Получается, что это из-за того, что "терминал" windows - сплошной костыль и его использование нужно минимизировать?
2) Для посимвольного считывания с клавиатуры я вместо getch() использовал cin.get(). Сейчас возникла необходимость посимвольного считывания из файла. Простой и неверный путь - fgetch(), но Ъ-программисты не ищут легких путей!

Существует ли какой-нибудь метод объекта cin класса istream для считывания из файла? Классы пока знаю чуть менее, чем никак, поэтому для чтения документации по iostream не хватает знаний. Пока просто обращаюсь за ответом на конкретный вопрос с надеждой, что понимание придет позже.
Заранее спасибо.