ifstream() или fopen()

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by masterlights, 24 Mar 2012.

  1. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    может глупый вопрос, но всё же
    что лучше использовать при написании программ на С++?
    ifstream - C++;
    fopen - C;

    есть ли какая-то разница между ними?
     
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Ты же на C++ пишешь, вот и используй ООП. Зачем использовать старое сишное АПИ, если ему на замену пришли современные плюсовые интерфейсы? Разница между ifstream и fopen:
    1. ifstream - это класс, он контролирует ресурсы, его не надо закрывать
    2. ifstream унаследован от istream, поэтому можно вывод в файл заменить на вывод в любой другой поток без изменения имен функций и операторов
    3. Перегруженные операторы позволяют организовать удобный вывод (<<)
    4. ifstream может кидать исключения, поэтому не нужно проверять коды возврата. Впрочем, может и не кидать, это как настроишь
    5. ifstream позволяет работать с другими вещами из stl удобно (итераторы, алгоритмы)
    6. Через потоки все операции ввода-вывода максимально типизированы, в отличие от функций си