ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

C++: путаница с istream::ignore и ios::clear

Язык C++ создали и продолжают разрабатывать люди (начал Бьёрн Страуструп, а потом к работе присоединились и другие люди). И эти люди, как кажется теперь, не всё выстроили логично, хотя, наверное, им когда-то казалось, что они действуют правильно. Как говорится, «не боги горшки обжигают».

Например, многие из тех, кто изучает C++, сталкиваются с непонятными названиями методов istream::ignore и ios::clear, вызывающими путаницу.

Конечно, можно заглянуть в справочник и просто запомнить, для чего используются эти методы (все так и поступают). Но, по идее, название метода должно давать какое-то первоначальное представление о его назначении, а в данном случае этого не происходит.

cin.ignore();
cin.ignore(10);
cin.ignore(10, '\n');

Что выполняют эти команды? Если не рассматривать подробности внутренней реализации, то можно сказать, что они просто удаляют (стирают) определенное число символов из потока. Для программиста-пользователя этого метода логичнее было бы, если б названием именно этого метода было clear («очистить»), а не непонятное на первый взгляд ignore («игнорировать»).

Что тогда делают следующие команды?

cin.clear();
cin.clear(ios::failbit);

Они вовсе не очищают поток от символов, как кажется на первый взгляд, а устанавливают определенные флаги ошибок в определенное состояние. Им подошло бы в качестве названия что-нибудь вроде setflags.
Tags: Английский язык, Образование, Программирование
Subscribe

  • Капля: от фантастического ужаса до программирования

    Помню, в детстве посмотрел американский фильм «Капля» («The Blob») 1988 года в жанре фантастических ужасов. Он произвел на меня большое впечатление.…

  • Любимый женский кавер песни «My Way»

    Голландский «Голос» вообще один из моих самых любимых. Удивительно, но почему-то именно эта маленькая страна дала этому шоу очень много понравившихся…

  • «Oh! Darling» против «Imagine»

    Не понимаю, что люди находят в песне «Imagine» Леннона. Ну да, мелодичная. Но по мне слишком спокойная и чересчур сладенькая. Вот «Oh! Darling»…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments