Действительно ли люди все еще используют cin и cout?

Это полностью вопрос мнения. Больше для болтовни. Я беру несколько тестов на C++, и они завалены cin и cout.
Люди до сих пор ими пользуются. Я имею в виду, что я никогда не видел ни одного в реальном публичном приложении.

Последний вопрос, на который я ответил в тесте, был

int c1;
cout << "Enter numbers: " << flush;
for(int n = 0; cin >> c1; ++n){
   cout << c1 << endl;
}
When does this end.. 

Правильный ответ был «когда пользователь нажимает ctrl + Z». Где, черт возьми, мне нажать Ctrl + Z? Полагаю, я предполагаю в терминале. А если честно. Я не видел терминал целую вечность. И я чертовски уверен, что не буду пытаться что-либо программировать для этого.

Актуальны ли такие вопросы в нашей жизни?

Ответов (13)

Да, вы можете захотеть обработать или преобразовать входной текстовый файл. Это пригодится.

Да, пока существуют консольные приложения, cout и cin будут существовать.

Итак, вы хотите сказать, что вы программист и никогда не использовали и не писали консольные приложения?

Терминалы широко используются и будут использоваться. Причина в том, что при умелом использовании они намного мощнее любых графических интерфейсов.

Я бы предпочел использовать wcin и wcout, по крайней мере, вы получите материал Unicode.

На мой взгляд, для написания сложной программы лучше всего отделить графический интерфейс от всего остального, т.е. в целом остальное должно работать даже без графического интерфейса .

В этом случае может быть удобно управлять вводом-выводом с помощью cin / cout.

Я использую std::cin, std::cout и std::cerr ежедневно. В системном программировании отсутствуют графические интерфейсы пользователя.

Нет, такие вопросы не очень актуальны, но да, люди постоянно используют std::cin и std::cout. Даже те, кто разрабатывает графические интерфейсы, могут использовать cout для отладки!

Если вы когда-либо писали только графические интерфейсы или веб-приложения в своей карьере, вам вряд ли пригодятся cin и cout. Если вы когда-нибудь напишете что-нибудь встроенное, вы измените свою позицию. Вы просто используете другой набор библиотек для консольных приложений, текстовых приложений, приложений с графическим интерфейсом и веб-приложений.

С точки зрения языка было бы более приемлемо, если бы ответ на «когда закончится эта программа» был бы «когда будет получен EOF». Тот факт, что Control-Z является EOF в DOS, не означает, что Ctrl-Z - правильный ответ.

Редактировать Отредактировано с комментариями.

Конечно, актуально.

Например, многие сценарии автоматизации и администрирования на различных серверах полагаются на ввод / вывод текста. Это особенно верно в системах * nix, а не в Windows сейчас, когда Powershell предлагает поддержку своих причудливых объектов.

Кроме того, есть те из нас (вымирающая порода, я признаю), которые в значительной степени ЖИВУТ в терминале. Терминал использую примерно 70-80% своей работы. Я просто считаю его более естественным, быстрым и мощным, чем большинство связанных приложений с графическим интерфейсом.

Люди до сих пор ими пользуются. Я имею в виду, что я никогда не видел ни одного в реальном публичном приложении.

Определите общедоступное приложение. Как вы думаете, какие инструменты командной строки на * nix используют? И да, мы тоже используем их для наших SDK (по крайней мере, cout и cerr). cin часто не лучший вариант, когда у вас достаточно сложный ввод - вам остается написать лексический анализатор и своего рода синтаксический анализатор.

Я работал над многими профессиональными приложениями, и мы не использовали cin или cout ни для одного из них, даже для ведения журнала / отладки. Почему? Потому что методы * printf без сохранения состояния работают отлично. Одна вещь, которую я усвоил за эти годы, - это то, что без сохранения состояния лучше всего с сохранением состояния.