Очистка экрана
Существует три способа очистки экрана в консольном приложении.
Пример 1
Это рекомендуемый метод, использующий последовательности виртуальных терминалов для всех новых разработок. Дополнительные сведения см. в обсуждении классических ИНТЕРФЕЙСов API консоли и последовательностей виртуальных терминалов.
Первый метод — настроить приложение для последовательностей выходных данных виртуального терминала, а затем вызвать команду «очистить экран».
#include int main(void) < HANDLE hStdOut; hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); // Fetch existing console mode so we correctly add a flag and not turn off others DWORD mode = 0; if (!GetConsoleMode(hStdOut, &mode)) < return ::GetLastError(); >// Hold original mode to restore on exit to be cooperative with other command-line apps. const DWORD originalMode = mode; mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; // Try to set the mode. if (!SetConsoleMode(hStdOut, mode)) < return ::GetLastError(); >// Write the sequence for clearing the display. DWORD written = 0; PCWSTR sequence = L"\x1b[2J"; if (!WriteConsoleW(hStdOut, sequence, (DWORD)wcslen(sequence), &written, NULL)) < // If we fail, try to restore the mode on the way out. SetConsoleMode(hStdOut, originalMode); return ::GetLastError(); >// To also clear the scroll back, emit L"\x1b[3J" as well. // 2J only clears the visible window and 3J only clears the scroll back. // Restore the mode on the way out to be nice to other command-line applications. SetConsoleMode(hStdOut, originalMode); return 0; >
Дополнительные варианты этой команды можно найти в документации по последовательности виртуальных терминалов в разделе «Удаление в дисплее«.
Пример 2
Второй метод — написать функцию, чтобы прокрутить содержимое экрана или буфера и задать заливку для обнаруженного пространства.
Это соответствует поведению командной строки cmd.exe .
#include void cls(HANDLE hConsole) < CONSOLE_SCREEN_BUFFER_INFO csbi; SMALL_RECT scrollRect; COORD scrollTarget; CHAR_INFO fill; // Get the number of character cells in the current buffer. if (!GetConsoleScreenBufferInfo(hConsole, &csbi)) < return; >// Scroll the rectangle of the entire buffer. scrollRect.Left = 0; scrollRect.Top = 0; scrollRect.Right = csbi.dwSize.X; scrollRect.Bottom = csbi.dwSize.Y; // Scroll it upwards off the top of the buffer with a magnitude of the entire height. scrollTarget.X = 0; scrollTarget.Y = (SHORT)(0 - csbi.dwSize.Y); // Fill with empty spaces with the buffer's default text attribute. fill.Char.UnicodeChar = TEXT(' '); fill.Attributes = csbi.wAttributes; // Do the scroll ScrollConsoleScreenBuffer(hConsole, &scrollRect, NULL, scrollTarget, &fill); // Move the cursor to the top left corner too. csbi.dwCursorPosition.X = 0; csbi.dwCursorPosition.Y = 0; SetConsoleCursorPosition(hConsole, csbi.dwCursorPosition); > int main(void)
Пример 3
Третий метод — написать функцию для программного очистки экрана с помощью функций FillConsoleOutputCharacter и FillConsoleOutputAttribute.
В следующем примере кода демонстрируется этот метод.
#include void cls(HANDLE hConsole) < COORD coordScreen = < 0, 0 >; // home for the cursor DWORD cCharsWritten; CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD dwConSize; // Get the number of character cells in the current buffer. if (!GetConsoleScreenBufferInfo(hConsole, &csbi)) < return; >dwConSize = csbi.dwSize.X * csbi.dwSize.Y; // Fill the entire screen with blanks. if (!FillConsoleOutputCharacter(hConsole, // Handle to console screen buffer (TCHAR)' ', // Character to write to the buffer dwConSize, // Number of cells to write coordScreen, // Coordinates of first cell &cCharsWritten)) // Receive number of characters written < return; >// Get the current text attribute. if (!GetConsoleScreenBufferInfo(hConsole, &csbi)) < return; >// Set the buffer's attributes accordingly. if (!FillConsoleOutputAttribute(hConsole, // Handle to console screen buffer csbi.wAttributes, // Character attributes to use dwConSize, // Number of cells to set attribute coordScreen, // Coordinates of first cell &cCharsWritten)) // Receive number of characters written < return; >// Put the cursor at its home coordinates. SetConsoleCursorPosition(hConsole, coordScreen); > int main(void)
Очистка экрана
Подскажите, пожалуйста, есть ли функция для очистки экрана в С++? Использовать conio библиотеку не предлагать: ибо она не является стандартной и используется сугубо под винду, так же не тратьте время и не предлагайте циклы с кучей выводов нулевого символа. Нагуглил, что можно:
system("clear");
но g++ компилятор выдает:
static.cpp:29:19: error: ‘system’ was not declared in this scope
То есть хотелось бы увидеть библиотеку и оператор очистки или библиотеку под систем(«») для С++.
Отслеживать
задан 16 мая 2011 в 13:33
145 2 2 золотых знака 5 5 серебряных знаков 14 14 бронзовых знаков
conio.h (от англ. console input-output — консольный ввод-вывод) — заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS, для создания текстового интерфейса пользователя. Она стандартна лишь в компиляторах мелкомягкого. Так что поучите матчасть еще=)
16 мая 2011 в 13:39
Можно подумать, cls вам экран очистит. Это ведь тоже только под винду.
С++ первая программа Очистка экрана clrscr();
Вы решили и нашли где скачать borland с++ 3.1 Понимаете что такое компилятор, но не знаете с чего начать программирование c++ . Самая первая программа, которую узнают будущие программисты – это пустая программа, а вторая уже – вывести на экран текст HelloWorld.
Будем считать, что с установкой borland c++ вопросов у вас не возникло.
Открываем наш компилятор и начинаем программирование программы HelloWorld на языке программирования C++
Первое – нужно научится и обязательно запомнить как писать пустую программу.
__________________________________________________________
Исходный код пустой программы в borland c++ 3.1 :
#include // Для того, чтобы сработал clrscr();
int main () // Объявление функции main
clrscr (); // Очищистка экрана
return 0 ; // Возврат из функции
>
__________________________________________________________
Нажать левый Ctrl+F9 (либо меню Run -> Run с помощью мышки)- особенного ничего не увидите. Создастся исполняемый файл, но вряд мы это заметим.
Чтобы посмотреть на действие нашей программы – можно нажать Alt+F5 – должно открыться пустое черное окно MS-DOS, – программа ничего не делала, кроме очистки экрана. поэтому экран должен оказаться пуст. (если вы не поставите скобки в команде clrscr (); и напишете clrscr ; – очистки экрана НЕ произойдет)
Для очистки экрана в borland C++ 3.1 используется команда clrscr (); Чтобы команда очистки экрана сработала, нужно в самом самом начале перед началом нашей программы написать строчку #include (Это заголовочный файл)
Давайте разбираться с кодом программы:
По науке – наша первая строчка читается как:
В первой строке программы расположена директива препроцессора #include , встретив которую, компилятор заменяет её на полный текст файла, на который она ссылается
Но как-то по науке больно заумно звучит, поэтому попробую более по разговорному описать, что всё это обозначает.
#include – Это так называемая директива (указатель на файл с инструкциями). Директива #include почти всегда используется для включения в программу файлов, содержащих необходимую информацию для работы с командами, и поэтому большинство программ на С++ начинаются с различных директив (указателей на инструкции).
Так как это указатель на инструкции – то надо указывать, где эти инструкции нужно взять, поэтому в угловых скобках нужно указать название нужного файла < conio.h – это имя файла>.
Без написания указателя на нужные инструкции многие команды (операторы) работать не будут и будет выдаваться ошибка .
– это файл, который содержит необходимые инструкции для работы с командой clrscr ();
При указании диррективы у начинающих часто возникают орфографические ошибки, поэтому проявляйте внимательность к написанному.
_______________________________________
Следующая непустая строчка содержит такой текст:
int main ()
обозачает эта строчка то, что мы объявили функцию с именем main , функция с именем main обязательно присутствует в каждой программе и выполняется в первую очередь сразу при запуске программы. Функции всегда соответствует какой-то тип.
Первое слово int происходит от слова Integer (обозначает целое число). После написания имени функции, мы должны поставить круглые скобки, в которых предполагается определение параметров, если параметров нет, то можно ставить пустые скобки ()
Определять и объявлять к какому типу принадлежит описываемая нами функция обязательно .
Тип функции не обязательно должен быть int . В зависимости от поставленной задачи, тип может быть и другим: char main () double main () –
(char, double – это типы переменных и что это такое будет описано в последующих статьях)
Главное запомните:
int main () – Начало программы. Не забывайте ставить скобки (я так понимаю достаточно распространено забыть)
__________________________________________________
После того, как было объявлено начало программы, мы должны создать код нашей программы.
Код программы описывается внутри фигурных скобок, сразу после имени функции, после закрывающейся скобки, мы открываем и закрываем фигурные скобки . Внутри этих фигурных скобок и будет выполняться написание нами кода
int main ()
Наш код
>
В примере который мы разбираем наш код – это одна команда Очистка экрана в borland c++ 3.1- clrscr ();
Для удобства обнаружения ошибок лучше разбивать код на строки, как было приведено примером выше, но можно было написать и так: int main ()
Пишем код, выполняющий одну команду:
int main ()
clrscr ();
>
(при выполнении возникает ошибка – тут не указан файл с инструкциями для работы команды clrscr ();- дописываем вверх #include ) (см. пример вверху). Чаще обращайте внимание на описание ошибки, даже если вы плохо знаете англ. язык, то постепенно всё равно станете привыкать и понимать суть ошибки будет проще.
__________________________________________________
осталось только выяснить что такое return 0 ; –
команда return;
в borland c++ 3.1 грубо говоря это выход из фунции. Мы как бы говорим программе, чтобы она завершила работу (в нашем примере работу функции main)
Обратите внимание, что внутри фигурных скобок, мы после описания каждой команды ставим точку с запятой.
clrscr () ;
return 0 ;
В С++ для начинающих, расстановка знаков препинания достаточно больной элемент. Слишком распространенная ошибка – забыть поставить завершающие точку с запятой
Всё что выше – это подробное описание, пища для мозга, но запоминать кроме кода пустой программы (тех строчек исходного кода) ничего не нужно. Разобраться с принципом построения заготовки для будущего проекта вполне реально, даже если и очень сложно.
Чтобы лучше запомнить как создавать пустую программу – запомните следующее:
- Указать на файл с нужными нам инструкциями (обычно необходимость возникает по ходу написания программы)
- Объявить главную функцию и определить её тип (В рассмотренном примере функция имеет тип int – Целочисленное значение)
- Поставить фигурные скобки для кода (Лучше всего сразу открывающуюся и закрывающуюся)
- Написать return 0;
- Не забывать о точке с запятой и не путать где и какие скобки
Знать всю программу надо как дважды два. Это самое простое, но очень нужное для новичков.
что делает функция system(«cls») в с++?
А можно как то написать эту функцию чтобы очищало всё что было написано в пределах одной области скобок ?
«ничего она там не делает. память только занимает. всё основано на Ядре системы и движке Windows.» — это гинеальна .
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.