Cerr c что это
блин собственно обыскался уже . может не там искал ,хз . но может кто нибудь подскажет в чем различие между cerr и cout ?
и то и то выводят сообщения на экран.
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
cout — это нормальный обычный вывод. Используй его для вывода сообщений в штатных ситуациях.
cerr — это сообщения об ошибках. Если ситуация нештатная — пиши сюда диагностические сообщения.
Когда запускаешь откомпилированную программу, можешь сделать так:
> myprog > normaloutput 2> errors
— после этого на экране ничего не появится, но обычный вывод будет сохранен в файле normaloutput, а сообщения об ошибках — в файле errors.
Предпочитаю на «ты».
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| ‘cout’ : undeclared identifier | Alt_Shift | Помощь студентам | 10 | 15.04.2011 07:54 |
| cerr в линукс убунточка | veter_s_morya | Общие вопросы C/C++ | 1 | 02.10.2010 14:43 |
| Вопрос по cout (С++) | EniOk | Помощь студентам | 2 | 06.12.2009 15:32 |
| cout: необъявленный идентификатор | alone_guy | Общие вопросы C/C++ | 1 | 13.02.2009 13:44 |
| error C2065: ‘cout’ | Даврон | Общие вопросы C/C++ | 9 | 24.12.2008 16:16 |
Cerr – обработка ошибок в C++
Эта статья пытается пролить некоторый свет на (часто игнорируемый) объект cerr в C++. ‘C’ в Сerr означает “символ” и “err” означает “ошибка”, значит Cerr означает “Ошибка символа”.
Он определен в заголовочном файле iostream и соответствует потоку C stderr. Он имеет очень похожее использование на объект cout (т. е. печать символов на консоли во время выполнения) под потоком stdout.
Различие
Даже при том, что результат обоих cout и cerr одинаков, есть очень тонкое различие между ними, которое мы можем найти в случае использования вышеупомянутых обоих потоков.
Вот пример кода, чтобы показать разницу между ними:
#include using namespace std; int main()
Оба приведенных выше оператора будут печатать символы, но под разными консолями / контекстом. Взгляните на результат.
Hey there, Geek! :: cout
Hey there, Geek! :: cerr
Итак, что же можно извлечь из их использования?
Как правило, stdout:: cout должен использоваться для фактического вывода программы, в то время как вся информация и сообщения об ошибках должны быть напечатаны в stderr::cerr.
Например: предположим, что пользователь хочет открыть файл и перенаправить вывод на этот внешний файл. Предположим, что во время выполнения программы (из-за какой-то проблемы) открытие файла выдает ошибку. Чтобы сохранить проверку таких ошибок, разработчик должен зарегистрировать ошибку где-то, чтобы проверить ее позже. Он может использовать cerr, так как эта ошибка все еще печатается, не будучи выходом на консоль или выходной файл.
Давайте посмотрим примерную программу для этого:
#include #include using namespace std; int main() < char fileName[] = "data.txt"; // Открытие файла с помощью объекта infile класса ifstream в заголовочном файле fstream ifstream infile(fileName); // Если файл существует, начните чтение с файла if(infile) cout << infile.rdbuf(); /* Если возникает какая-либо проблема, это сообщение отображается как ошибка. Таким образом, пользователь может четко различать между подлинным выводом и ошибками в своем коде. еще */ cerr
Понравилось то, что вы прочитали?
Подписывайтесь на нашу рассылку и получайте ежедневные обновления о новых учебниках, статьях, курсах и о многом другом!
Просто введите ваш адрес электронной почты, чтобы подписаться.
(Без спамов; ежемесячно два письма; отписаться от рассылки можно в любое время)
Спасибо!
Подписка успешно оформлена.
cerr

объясните пожалуйста что делает cerr?
cerr — объект класса ostream, который представляет стандартный ошибочный поток.
что значит ошибочный поток?
* Используя выходной поток cerr, ваши программы могут посылать сообщения на стандартное устройство ошибок, избавляя пользователей от необходимости переназначения сообщений.
это я тоже не совсем понял..можете объяснить или пример превести, а лучше то и другое)
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
cerr
Объясните почему используют std::cerr для вывода ошибок,а не обычный std::cout к примеру?
exception и cerr
Страуструп пишет ". Если мы не перехватим исключение, связанное с выходом за границу .
Cerr и clog
У меня собственно бональнвй вопрос.. Перелопатил гугл, но так и не дошло 🙁 Объясните простому.
Операторы Cerr, Clog
Помогите пожалуйста разобраться. Я уже довольно долгр прогрммирую на C++, но с операторами cerr и.
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
Например, есть bat файл со всякой фигнёй, полезный вывод перенаправляется в какой-то файл:
qq.exe >1.txt ww.exe >>1.txt .
Но в таком случае может быть удобно, чтобы сообщения об ошибках не писались в файл, а выводились на консоль. Если их выводить в поток ошибок, по умолчанию так и есть.
Поток ошибок при необходимости перенаправляется отдельно
rem В другой файл qq.exe >1.txt 2>err.txt rem В тот же qq.exe >1.txt 2>&1
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Перенаправление std::cerr
Всем доброго времени суток! Возможно вопрос очень простой, но вразумительного ответа найти не.
Что и в каких случаях лучше использовать: cerr, clog, cout ?
Доброго времени суток! Подскажите пожалуйста, когда лучше использовать cerr, clog, cout? При.
Поясните: cerr Приветствую всех, необходима ваша помощь: В разрабатываемой программе одни из пунктов, которые.
Или воспользуйтесь поиском по форуму:
Что такое «cerr» и «stderr»?
В чем разница между ними и как они используются? Кто-нибудь может привести меня к примерам?
Конкретно, как вы «записываете» в поток в обоих случаях и как восстанавливаете и выводят (т.е. на экран) текст, который был написан в него?
Также, «экранный» вывод сам по себе является потоком? Может быть, я плохо понимаю потоки. Это также можно сохранить в файл, конечно, я знаю. Будет ли все это использовать fprintf / fscanf и т.д.?
Поделиться Источник 08 июля 2010 в 01:32
2 ответа
cerr — это поток C++, а stderr — это файл C, оба представляют стандартный вывод ошибок.
Вы пишете им то же самое, что вы пишете в другие потоки и файловые дескрипторы:
cerr
Я не уверен, что вы имеете в виду под "восстановлением" в этом контексте, вывод переходит к стандартной ошибке, и все. Программа не должна заботиться о ней после этого. Если вы имеете в виду, как сохранить ее для последующих действий, извне программы, см. следующий абзац.
По умолчанию они будут перенаправлены в ваш терминал, но вывод можно перенаправить в другое место с помощью чего-то вроде:
run_my_prog 2>error.out
И, да, вывод "экрана" является потоком (или файловой обработкой), но это обычно происходит только потому, что stdout/cout и stderr/cerr по умолчанию подключены к вашему "экрану". Перенаправление повлияет на это, как в следующем случае, когда ничего не будет записано на ваш экран:
run_my_prog >/dev/null 2>&1
(несмотря на сложные вещи, такие как запись напрямую в /dev/tty ). Этот фрагмент перенаправит как стандартный вывод, так и стандартную ошибку, чтобы перейти в битовый сегмент.
Поделиться 08 июля 2010 в 01:37
stderr - это FILE* , и часть стандартной библиотеки C. cerr - это ostream и часть стандартной библиотеки C++.
Также, вывод "экрана" сам по себе является правильным потоком?
Да, это так. Но на самом деле есть два потока, которые записывают на экран по умолчанию: stdout / cout - это для обычного вывода, а stderr / cerr - для сообщений об ошибках. Это полезно для перенаправления: Вы можете перенаправить stdout на файл, но все еще имеете свои сообщения об ошибках на экране.