Очистка экрана
Подскажите, пожалуйста, есть ли функция для очистки экрана в С++? Использовать conio библиотеку не предлагать: ибо она не является стандартной и используется сугубо под винду, так же не тратьте время и не предлагайте циклы с кучей выводов нулевого символа. Нагуглил, что можно:
system("clear");
но g++ компилятор выдает:
static.cpp:29:19: error: ‘system’ was not declared in this scope
То есть хотелось бы увидеть библиотеку и оператор очистки или библиотеку под систем(«») для С++.
Отслеживать
задан 16 мая 2011 в 13:33
135 2 2 золотых знака 5 5 серебряных знаков 14 14 бронзовых знаков
conio.h (от англ. console input-output — консольный ввод-вывод) — заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS, для создания текстового интерфейса пользователя. Она стандартна лишь в компиляторах мелкомягкого. Так что поучите матчасть еще=)
16 мая 2011 в 13:39
Можно подумать, cls вам экран очистит. Это ведь тоже только под винду.
Console. Clear Метод
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет из буфера консоли и ее окна отображаемую информацию.
public: static void Clear();
public static void Clear ();
[System.Runtime.Versioning.UnsupportedOSPlatform("android")] [System.Runtime.Versioning.UnsupportedOSPlatform("ios")] [System.Runtime.Versioning.UnsupportedOSPlatform("tvos")] public static void Clear ();
static member Clear : unit -> unit
[] [] [] static member Clear : unit -> unit
Public Shared Sub Clear ()
Исключения
Примеры
В следующем примере метод используется Clear для очистки консоли перед выполнением цикла, предлагает пользователю выбрать цвет переднего плана и фона и ввести строку для отображения. Если пользователь решит не выйти из программы, восстанавливаются исходные цвета переднего плана и фона консоли, а Clear метод вызывается еще раз перед повторным выполнением цикла.
using System; public class Example < public static void Main() < // Save colors so they can be restored when use finishes input. ConsoleColor dftForeColor = Console.ForegroundColor; ConsoleColor dftBackColor = Console.BackgroundColor; bool continueFlag = true; Console.Clear(); do < ConsoleColor newForeColor = ConsoleColor.White; ConsoleColor newBackColor = ConsoleColor.Black; Char foreColorSelection = GetKeyPress("Select Text Color (B for Blue, R for Red, Y for Yellow): ", new Char[] < 'B', 'R', 'Y' >); switch (foreColorSelection) < case 'B': case 'b': newForeColor = ConsoleColor.DarkBlue; break; case 'R': case 'r': newForeColor = ConsoleColor.DarkRed; break; case 'Y': case 'y': newForeColor = ConsoleColor.DarkYellow; break; >Char backColorSelection = GetKeyPress("Select Background Color (W for White, G for Green, M for Magenta): ", new Char[] < 'W', 'G', 'M' >); switch (backColorSelection) < case 'W': case 'w': newBackColor = ConsoleColor.White; break; case 'G': case 'g': newBackColor = ConsoleColor.Green; break; case 'M': case 'm': newBackColor = ConsoleColor.Magenta; break; >Console.WriteLine(); Console.Write("Enter a message to display: "); String textToDisplay = Console.ReadLine(); Console.WriteLine(); Console.ForegroundColor = newForeColor; Console.BackgroundColor = newBackColor; Console.WriteLine(textToDisplay); Console.WriteLine(); if (Char.ToUpper(GetKeyPress("Display another message (Y/N): ", new Char[] < 'Y', 'N' >)) == 'N') continueFlag = false; // Restore the default settings and clear the screen. Console.ForegroundColor = dftForeColor; Console.BackgroundColor = dftBackColor; Console.Clear(); > while (continueFlag); > private static Char GetKeyPress(String msg, Char[] validChars) < ConsoleKeyInfo keyPressed; bool valid = false; Console.WriteLine(); do < Console.Write(msg); keyPressed = Console.ReadKey(); Console.WriteLine(); if (Array.Exists(validChars, ch =>ch.Equals(Char.ToUpper(keyPressed.KeyChar)))) valid = true; > while (! valid); return keyPressed.KeyChar; > >
open System let getKeyPress msg validChars = Console.WriteLine() let mutable valid = false let mutable keyChar = ' ' while not valid do printfn "%s" msg let keyPressed = Console.ReadKey() printfn "" if validChars |> List.exists (fun ch -> ch.Equals(Char.ToUpper keyPressed.KeyChar)) then valid ConsoleColor.DarkBlue | 'R' | 'r' -> ConsoleColor.DarkRed | 'Y' | 'y' -> ConsoleColor.DarkYellow | _ -> ConsoleColor.White let backColorSelection = getKeyPress "Select Background Color (W for White, G for Green, M for Magenta): " [ 'W'; 'G'; 'M' ] let newBackColor = match backColorSelection with | 'W' | 'w' -> ConsoleColor.White | 'G' | 'g' -> ConsoleColor.Green | 'M' | 'm' -> ConsoleColor.Magenta | _ -> ConsoleColor.Black printfn "" printf "Enter a message to display: " let textToDisplay = Console.ReadLine() printfn "" Console.ForegroundColor
Module Example Public Sub Main() ' Save colors so they can be restored when use finishes input. Dim dftForeColor As ConsoleColor = Console.ForegroundColor Dim dftBackColor As ConsoleColor = Console.BackgroundColor Dim continueFlag As Boolean = True Console.Clear() Do Dim newForeColor As ConsoleColor Dim newBackColor As ConsoleColor Dim foreColorSelection As Char = GetKeyPress("Select Text Color (B for Blue, R for Red, Y for Yellow): ", < "B"c, "R"c, "Y"c >) Select Case foreColorSelection Case "B"c, "b"c newForeColor = ConsoleColor.DarkBlue Case "R"c, "r"c newForeColor = ConsoleColor.DarkRed Case "Y"c, "y"c newForeColor = ConsoleColor.DarkYellow End Select Dim backColorSelection As Char = GetKeyPress("Select Background Color (W for White, G for Green, M for Magenta): ", < "W"c, "G"c, "M"c >) Select Case backColorSelection Case "W"c, "w"c newBackColor = ConsoleColor.White Case "G"c, "g"c newBackColor = ConsoleColor.Green Case "M"c, "m"c newBackColor = ConsoleColor.Magenta End Select Console.WriteLine() Console.Write("Enter a message to display: ") Dim textToDisplay As String = Console.ReadLine() Console.WriteLine() Console.ForegroundColor = newForeColor Console.BackgroundColor = newBackColor Console.WriteLine(textToDisplay) Console.WriteLine() If Char.ToUpper(GetKeyPress("Display another message (Y/N): ", < "Y"c, "N"c >)) = "N" Then continueFlag = False End If ' Restore the default settings and clear the screen. Console.ForegroundColor = dftForeColor Console.BackgroundColor = dftBackColor Console.Clear() Loop While continueFlag End Sub Private Function GetKeyPress(msg As String, validChars() As Char) As Char Dim keyPressed As ConsoleKeyInfo Dim valid As Boolean = False Console.WriteLine() Do Console.Write(msg) keyPressed = Console.ReadKey() Console.WriteLine() If Array.Exists(validChars, Function(ch As Char) ch.Equals(Char.ToUpper(keypressed.KeyChar))) valid = True End If Loop While Not valid Return keyPressed.KeyChar End Function End Module
В этом примере используется GetKeyPress метод для проверки выбора пользователем переднего плана и цвета фона.
В этом примере показаны CursorLeft свойства и CursorTop SetCursorPosition методы и Clear методы. В примере размещается курсор, который определяет, где будет происходить следующая запись, чтобы нарисовать 5 символов на 5 символов прямоугольника с помощью сочетания строк "+", "|" и "-". Обратите внимание, что прямоугольник можно нарисовать с меньшим количеством шагов с помощью сочетания других строк.
// This example demonstrates the // Console.CursorLeft and // Console.CursorTop properties, and the // Console.SetCursorPosition and // Console.Clear methods. using namespace System; int origRow; int origCol; void WriteAt( String^ s, int x, int y ) < try < Console::SetCursorPosition( origCol + x, origRow + y ); Console::Write( s ); >catch ( ArgumentOutOfRangeException^ e ) < Console::Clear(); Console::WriteLine( e->Message ); > > int main() < // Clear the screen, then save the top and left coordinates. Console::Clear(); origRow = Console::CursorTop; origCol = Console::CursorLeft; // Draw the left side of a 5x5 rectangle, from top to bottom. WriteAt( "+", 0, 0 ); WriteAt( "|", 0, 1 ); WriteAt( "|", 0, 2 ); WriteAt( "|", 0, 3 ); WriteAt( "+", 0, 4 ); // Draw the bottom side, from left to right. WriteAt( "-", 1, 4 ); // shortcut: WriteAt("---", 1, 4) WriteAt( "-", 2, 4 ); // . WriteAt( "-", 3, 4 ); // . WriteAt( "+", 4, 4 ); // Draw the right side, from bottom to top. WriteAt( "|", 4, 3 ); WriteAt( "|", 4, 2 ); WriteAt( "|", 4, 1 ); WriteAt( "+", 4, 0 ); // Draw the top side, from right to left. WriteAt( "-", 3, 0 ); // shortcut: WriteAt("---", 1, 0) WriteAt( "-", 2, 0 ); // . WriteAt( "-", 1, 0 ); // . // WriteAt( "All done!", 0, 6 ); Console::WriteLine(); >/* This example produces the following results: +---+ | | | | | | +---+ All done! */
// This example demonstrates the // Console.CursorLeft and // Console.CursorTop properties, and the // Console.SetCursorPosition and // Console.Clear methods. using System; class Sample < protected static int origRow; protected static int origCol; protected static void WriteAt(string s, int x, int y) < try < Console.SetCursorPosition(origCol+x, origRow+y); Console.Write(s); >catch (ArgumentOutOfRangeException e) < Console.Clear(); Console.WriteLine(e.Message); >> public static void Main() < // Clear the screen, then save the top and left coordinates. Console.Clear(); origRow = Console.CursorTop; origCol = Console.CursorLeft; // Draw the left side of a 5x5 rectangle, from top to bottom. WriteAt("+", 0, 0); WriteAt("|", 0, 1); WriteAt("|", 0, 2); WriteAt("|", 0, 3); WriteAt("+", 0, 4); // Draw the bottom side, from left to right. WriteAt("-", 1, 4); // shortcut: WriteAt("---", 1, 4) WriteAt("-", 2, 4); // . WriteAt("-", 3, 4); // . WriteAt("+", 4, 4); // Draw the right side, from bottom to top. WriteAt("|", 4, 3); WriteAt("|", 4, 2); WriteAt("|", 4, 1); WriteAt("+", 4, 0); // Draw the top side, from right to left. WriteAt("-", 3, 0); // shortcut: WriteAt("---", 1, 0) WriteAt("-", 2, 0); // . WriteAt("-", 1, 0); // . // WriteAt("All done!", 0, 6); Console.WriteLine(); >> /* This example produces the following results: +---+ | | | | | | +---+ All done! */
// This example demonstrates the // Console.CursorLeft and // Console.CursorTop properties, and the // Console.SetCursorPosition and // Console.Clear methods. open System // Clear the screen, then save the top and left coordinates. Console.Clear() let origRow = Console.CursorTop let origCol = Console.CursorLeft let writeAt s x y = try Console.SetCursorPosition(origCol + x, origRow + y) printfn $"%s" with :? ArgumentOutOfRangeException as e -> Console.Clear() printfn $"" // Draw the left side of a 5x5 rectangle, from top to bottom. writeAt "+" 0 0 writeAt "|" 0 1 writeAt "|" 0 2 writeAt "|" 0 3 writeAt "+" 0 4 // Draw the bottom side, from left to right. writeAt "-" 1 4 // shortcut: writeAt "---", 1, 4) writeAt "-" 2 4 // . writeAt "-" 3 4 // . writeAt "+" 4 4 // Draw the right side, from bottom to top. writeAt "|" 4 3 writeAt "|" 4 2 writeAt "|" 4 1 writeAt "+" 4 0 // Draw the top side, from right to left. writeAt "-" 3 0 // shortcut: writeAt "---", 1, 0) writeAt "-" 2 0 // . writeAt "-" 1 0 // . writeAt "All done!" 0 6 printfn "" // This example produces the following results: // // +---+ // | | // | | // | | // +---+ // // All done!
' This example demonstrates the ' Console.CursorLeft and ' Console.CursorTop properties, and the ' Console.SetCursorPosition and ' Console.Clear methods. Class Sample Protected Shared origRow As Integer Protected Shared origCol As Integer Protected Shared Sub WriteAt(s As String, x As Integer, y As Integer) Try Console.SetCursorPosition(origCol + x, origRow + y) Console.Write(s) Catch e As ArgumentOutOfRangeException Console.Clear() Console.WriteLine(e.Message) End Try End Sub Public Shared Sub Main() ' Clear the screen, then save the top and left coordinates. Console.Clear() origRow = Console.CursorTop origCol = Console.CursorLeft ' Draw the left side of a 5x5 rectangle, from top to bottom. WriteAt("+", 0, 0) WriteAt("|", 0, 1) WriteAt("|", 0, 2) WriteAt("|", 0, 3) WriteAt("+", 0, 4) ' Draw the bottom side, from left to right. WriteAt("-", 1, 4) ' shortcut: WriteAt("---", 1, 4) WriteAt("-", 2, 4) ' . WriteAt("-", 3, 4) ' . WriteAt("+", 4, 4) ' Draw the right side, from bottom to top. WriteAt("|", 4, 3) WriteAt("|", 4, 2) WriteAt("|", 4, 1) WriteAt("+", 4, 0) ' Draw the top side, from right to left. WriteAt("-", 3, 0) ' shortcut: WriteAt("---", 1, 0) WriteAt("-", 2, 0) ' . WriteAt("-", 1, 0) ' . ' WriteAt("All done!", 0, 6) Console.WriteLine() End Sub End Class ' 'This example produces the following results: ' '+---+ '| | '| | '| | '+---+ ' 'All done! '
Комментарии
Clear Использование метода эквивалентно вызову команды MS-DOS cls в окне командной строки. Clear При вызове метода курсор автоматически прокручивается в левый верхний угол окна, а содержимое буфера экрана — пустыми с использованием текущих цветов фона переднего плана.
Попытка вызова Clear метода при перенаправлении выходных данных консольного приложения в файл вызывает исключение IOException. Чтобы предотвратить это, всегда заключайте вызов Clear метода в try . catch Блок.
System("cls")
System("cls") *.exe вызвал срабатывание точки останова
При вызове функции system("cls"); крашит программу, но при вызове этой же функции функции с другими.
Как с system("cls") очистить экран в определенных местах
Здравствуйте,неподскажите,Как при помощи system("cls"),или любой другой функции,очистить экран.
System("cls") завершает работу. Как исправить?
Пытался очистить экран консоли командой system("cls"). С задачей она справилась на ура, но вот.
Аналог system("cls"); Есть ли что то побыстрей?
Нужно стирать содержимое с окна и выводить новое. Функция cls как то заторможено это делает. Нужно.
что делает функция system("cls") в с++?
А можно как то написать эту функцию чтобы очищало всё что было написано в пределах одной области скобок ?
"ничего она там не делает. память только занимает. всё основано на Ядре системы и движке Windows." - это гинеальна .
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.