Очистити екран за допомогою C ++

Я хотів би, щоб очистити екран CMD я бачив кілька варіантів в першу чергу

system('clr');  

але не хочете використовувати систему причиною, то це робить його залежним від вікон, так само з версією UNIX

якщо я намагаюся

cout << string(22, '\n');

тоді мій наступний рядок тексту знаходиться в нижній частині екрана, і я хочу, щоб це було у верхній частині. Як я можу очистити екран і повернути текст у верхню частину екрана?

Так скажу, що у мене це.

cout<<<"************Question 1 *******"<<<"WHO WAS THE FIRST BLACK PRESEDENT?"<<<"(1) Obama"<<<"(2) Bush"<<<"(3) Jordan" <>answer>>endl;

це очистить екран потім покласти mymenu в нижній частині екрана ... як я можу зробити це ясно екран і поставити питання/відповіді назад вгору екрана.

6
точно підмножина, таким чином, шанс, що C ++ може зробити щось, де c canNOT більше, ніж можливо і відбувається!
додано Автор Glen Morse, джерело
@marcelloRomani ідеально! Я можу використовувати, що як тільки я виявити платформу там за допомогою, як відповідь сказав, що не було стандартної функції, і це, здається, слідувати тому, що він сказав.
додано Автор Glen Morse, джерело
@Gorpik відмінно! але це не змінює того факту, що це одне й те саме питання! Я впевнений, що є багато різниці в двох програмах, ніколи не використовували c, але якщо це було точно так само, як C + +, то вони обидва мають однакову назву.
додано Автор Glen Morse, джерело
@Gorpik відмінно! але це не змінює того факту, що це одне й те саме питання! Я впевнений, що є багато різниці в двох програмах, ніколи не використовували c, але якщо це було точно так само, як C + +, то вони обидва мають однакову назву.
додано Автор Glen Morse, джерело
@matthewD він, можливо, прийшов з C, але все ще є багато C + + може зробити це c не може
додано Автор Glen Morse, джерело
@matthewD він, можливо, прийшов з C, але все ще є багато C + + може зробити це c не може
додано Автор Glen Morse, джерело
якщо фактично цей розділ коментарів здається "Перевантажений" ... Ви бачили те, що я там зробив ..
додано Автор Glen Morse, джерело
якщо фактично цей розділ коментарів здається "Перевантажений" ... Ви бачили те, що я там зробив ..
додано Автор Glen Morse, джерело
@marcelloRomani ідеально! Я можу використовувати, що як тільки я виявити платформу там за допомогою, як відповідь сказав, що не було стандартної функції, і це, здається, слідувати тому, що він сказав.
додано Автор Glen Morse, джерело
точно підмножина, таким чином, шанс, що C ++ може зробити щось, де c canNOT більше, ніж можливо і відбувається!
додано Автор Glen Morse, джерело
що можна сказати для будь-якої мови ...
додано Автор Glen Morse, джерело
що можна сказати для будь-якої мови ...
додано Автор Glen Morse, джерело
нічого на цій сторінці не дає відповіді на питання, але як ви очищаєте екран? @aswinMurugesh
додано Автор Glen Morse, джерело
стандартна функція C ++ була б найкращою, але її не вдалося знайти.
додано Автор Glen Morse, джерело
стандартна функція C ++ була б найкращою, але її не вдалося знайти.
додано Автор Glen Morse, джерело
Я думав, clrscr() була тільки функція компілятора ... як у тільки borland?
додано Автор Glen Morse, джерело
це C ++, а не тільки, як очистити екран, а також перемістити курсор/текст вгору.
додано Автор Glen Morse, джерело
нічого на цій сторінці не дає відповіді на питання, але як ви очищаєте екран? @aswinMurugesh
додано Автор Glen Morse, джерело
Я думав, clrscr() була тільки функція компілятора ... як у тільки borland?
додано Автор Glen Morse, джерело
@GlenMorse Ця ж відповідь застосовується, тому вона є дублікатом.
додано Автор lesderid, джерело
@GlenMorse Ця ж відповідь застосовується, тому вона є дублікатом.
додано Автор lesderid, джерело
@GlenMorse Можливо, у нього немає відповіді, яка вам подобається, але у неї є відповідні відповіді, які продовжують застосовуватися для цього питання.
додано Автор lesderid, джерело
@GlenMorse Можливо, у нього немає відповіді, яка вам подобається, але у неї є відповідні відповіді, які продовжують застосовуватися для цього питання.
додано Автор lesderid, джерело
якщо очистити екран, курсор автоматично переходить у верхню частину екрана
додано Автор Aswin Murugesh, джерело
якщо очистити екран, курсор автоматично переходить у верхню частину екрана
додано Автор Aswin Murugesh, джерело
Для цієї проблеми не існує такого конкретного платформи незалежного рішення
додано Автор Aswin Murugesh, джерело
Для цієї проблеми не існує такого конкретного платформи незалежного рішення
додано Автор Aswin Murugesh, джерело
Ви дивилися на деякі рішення, як ncurses/PDCurses? Це не зовсім крос-платформа, але вона буде робити те, що ви хочете.
додано Автор CmdrMoozy, джерело
clrscr() зазвичай визначається в conio.h , який, як правило, доступний лише у Windows ( en.wikipedia.org/wiki/Conio.h ) - Я стверджую, що він приблизно такий же портативний, як і система OP ('clr'); .
додано Автор CmdrMoozy, джерело
clrscr() зазвичай визначається в conio.h , який, як правило, доступний лише у Windows ( en.wikipedia.org/wiki/Conio.h ) - Я стверджую, що він приблизно такий же портативний, як і система OP ('clr'); .
додано Автор CmdrMoozy, джерело
додано Автор Christian.K, джерело
додано Автор Christian.K, джерело
Ось найповніший посібник щодо "очищення екрану" в консольному режимі, який я знайшов:
додано Автор Marcello Romani, джерело
Ось найповніший посібник щодо "очищення екрану" в консольному режимі, який я знайшов:
додано Автор Marcello Romani, джерело
Звичайно, C та C ++ не є однією мовою. Але C є (грубо) підмножиною C ++, і системні виклики, як правило, потрапляють всередину цієї підмножини.
додано Автор Gorpik, джерело
Звичайно, C та C ++ не є однією мовою. Але C є (грубо) підмножиною C ++, і системні виклики, як правило, потрапляють всередину цієї підмножини.
додано Автор Gorpik, джерело
Глен, прийнята відповідь на інше питання починається: Ну, C не розуміє поняття екрану. Таким чином, будь-який код не може бути портативним. Замініть C на C ++, і це стосується вашого випадку.
додано Автор Gorpik, джерело
Глен, прийнята відповідь на інше питання починається: Ну, C не розуміє поняття екрану. Таким чином, будь-який код не може бути портативним. Замініть C на C ++, і це стосується вашого випадку.
додано Автор Gorpik, джерело
Додаткові частини в C ++ дозволяють писати той же код, використовуючи різні стилі (наприклад, ООП). Це не означає, що C менш здатний. Все, що ви можете написати в C ++, ви також можете написати в C, ви просто пишете по-іншому, це все.
додано Автор MatthewD, джерело
Додаткові частини в C ++ дозволяють писати той же код, використовуючи різні стилі (наприклад, ООП). Це не означає, що C менш здатний. Все, що ви можете написати в C ++, ви також можете написати в C, ви просто пишете по-іншому, це все.
додано Автор MatthewD, джерело
@GlenMorse: Ви можете написати код на C і викликати його з C ++. І ви можете написати код на C ++ і викликати його з C. Всі рішення у відповіді, які ви позначили як правильні, є насправді бібліотеками, написаними на C.
додано Автор MatthewD, джерело
@GlenMorse: Ви можете написати код на C і викликати його з C ++. І ви можете написати код на C ++ і викликати його з C. Всі рішення у відповіді, які ви позначили як правильні, є насправді бібліотеками, написаними на C.
додано Автор MatthewD, джерело
@GlenMorse: Це досить наївна заява (якщо припустити, що я її розібрала правильно). Я пропоную вам прочитати про історію C ++.
додано Автор MatthewD, джерело
@GlenMorse: Це досить наївна заява (якщо припустити, що я її розібрала правильно). Я пропоную вам прочитати про історію C ++.
додано Автор MatthewD, джерело
як щодо clrscr()
додано Автор user2404546, джерело
як щодо clrscr()
додано Автор user2404546, джерело

7 Відповіді

Спробуйте це: він працює як на Linux, так і на Windows.

cout << "\033[2J\033[1;1H";

Це рядок спеціальних символів, що перекладається, щоб очистити команду екрана.

Ви можете вкласти це у функцію, наприклад, наприклад, clrscr() залежно від вашої реалізації.

14
додано
Ні це не так! ncourses працює тільки в * x, а не у Windows
додано Автор boctulus, джерело
MinGW g ++ мій друг
додано Автор boctulus, джерело
Я зробив (Windows 8.1)
додано Автор boctulus, джерело
@Boctulus, я думаю, ви помиляєтеся .. У мене є windows і linux env і я використовую це, щоб очистити екран. Я пропоную вам спробувати себе на вашому середовищі Windows.
додано Автор catzilla, джерело
який компілятор ви використовуєте? Я використовую g ++ на msys
додано Автор catzilla, джерело

If you want a solution that will work on Windows, Mac & Linux/UNIX, you will need to come up with your own implementation. I do not believe that there is a single way to do it that works on all platforms.

Для Mac/Linux/UNIX/BSD/і т.д. ncurses надає простий спосіб зробити це ( http: //www.gnu org/software/ncurses/).

Для Windows, ви, ймовірно, захочете заглянути в conio.h ( http: //en.wikipedia .org/wiki/Conio.h ) або PDCurses ( http://pdcurses.sourceforge.net/ ) або щось інше подібні. Крім того, здається, що ви можете зробити це без будь-яких бібліотек третіх сторін, згідно з цією статтею Microsoft KB: microsoft.com/kb/99261 .

There is unfortunately no standard C/C++ function to do this. You should be able to write a small function which will build & work on any platform using the different methods I mentioned and some preprocessor directives.

Якщо у вас немає зручного способу виявлення платформи, я б, напевно, порекомендував би cmake.

8
додано
Так що ніякої стандартної функції, таким чином я повинен виявити платформу, а потім використовувати один з цих двох варіантів на основі того, що я виявив?
додано Автор Glen Morse, джерело
збираюся дати вам відповідь перед деякими дурними людьми, які думають, що c і C ++ є точно тією ж програмою і просто тому, що один не робить щось, то інший не повинен.
додано Автор Glen Morse, джерело
Наскільки я знаю, так. Я очікую, що результат буде лише сто рядків коду або щось, і ви повинні використовувати систему збірки, яка може виявити платформу в будь-якому випадку, так що це, ймовірно, не настільки "потворний" варіант, як ви думаєте.
додано Автор CmdrMoozy, джерело

If you want a solution that will work on Windows, Mac & Linux/UNIX, you will need to come up with your own implementation. I do not believe that there is a single way to do it that works on all platforms.

Для Mac/Linux/UNIX/BSD/і т.д. ncurses надає простий спосіб зробити це ( http: //www.gnu org/software/ncurses/).

Для Windows, ви, ймовірно, захочете заглянути в conio.h ( http: //en.wikipedia .org/wiki/Conio.h ) або PDCurses ( http://pdcurses.sourceforge.net/ ) або щось інше подібні. Крім того, здається, що ви можете зробити це без будь-яких бібліотек третіх сторін, згідно з цією статтею Microsoft KB: microsoft.com/kb/99261 .

There is unfortunately no standard C/C++ function to do this. You should be able to write a small function which will build & work on any platform using the different methods I mentioned and some preprocessor directives.

Якщо у вас немає зручного способу виявлення платформи, я б, напевно, порекомендував би cmake.

8
додано
збираюся дати вам відповідь перед деякими дурними людьми, які думають, що c і C ++ є точно тією ж програмою і просто тому, що один не робить щось, то інший не повинен.
додано Автор Glen Morse, джерело
Так що ніякої стандартної функції, таким чином я повинен виявити платформу, а потім використовувати один з цих двох варіантів на основі того, що я виявив?
додано Автор Glen Morse, джерело
Наскільки я знаю, так. Я очікую, що результат буде лише сто рядків коду або щось, і ви повинні використовувати систему збірки, яка може виявити платформу в будь-якому випадку, так що це, ймовірно, не настільки "потворний" варіант, як ви думаєте.
додано Автор CmdrMoozy, джерело

Іншим способом було б використовувати OpenGL, Qt або SDL, які є крос-платформенними і писати графічну консоль. Це можна побачити в багатьох іграх, наприклад, Фортеця-карлик .

1
додано
Це також відмінний варіант, і відповіді, як це, що я сподівався, але просто відбувається в цьому випадку я не буду використовувати OpenGL. Але спасибі за поділ ідеї
додано Автор Glen Morse, джерело
Це спрацювало, але слід зазначити, що це, ймовірно, потребуватиме значно більше зусиль, ніж інші рішення. Це дає вам більш обмежений контроль, хоча, так що в залежності від того, що ваша кінцева мета це може бути варто.
додано Автор CmdrMoozy, джерело

Іншим способом було б використовувати OpenGL, Qt або SDL, які є крос-платформенними і писати графічну консоль. Це можна побачити в багатьох іграх, наприклад, Фортеця-карлик .

1
додано
Це також відмінний варіант, і відповіді, як це, що я сподівався, але просто відбувається в цьому випадку я не буду використовувати OpenGL. Але спасибі за поділ ідеї
додано Автор Glen Morse, джерело
Це спрацювало, але слід зазначити, що це, ймовірно, потребуватиме значно більше зусиль, ніж інші рішення. Це дає вам більш обмежений контроль, хоча, так що в залежності від того, що ваша кінцева мета це може бути варто.
додано Автор CmdrMoozy, джерело

У UNIX спробуйте

system("clear")

clrscr() may not work in UNIX because some compilers do not support conio.h

0
додано
спасибі, але я не хочу функцію, залежну від ОС, або стандартну функцію C + + або інший спосіб, який не залежить від ОС
додано Автор Glen Morse, джерело
Це важке завдання, оскільки conio підтримується в основному у вікнах і не підтримується іншими операційними системами
додано Автор Aswin Murugesh, джерело

У UNIX спробуйте

system("clear")

clrscr() may not work in UNIX because some compilers do not support conio.h

0
додано
спасибі, але я не хочу функцію, залежну від ОС, або стандартну функцію C + + або інший спосіб, який не залежить від ОС
додано Автор Glen Morse, джерело
Це важке завдання, оскільки conio підтримується в основному у вікнах і не підтримується іншими операційними системами
додано Автор Aswin Murugesh, джерело
IT KPI C/С++ новым годом
IT KPI C/С++ новым годом
747 учасників

Чат обсуждения С/С++. - Вопросы "напишите за меня лабу" - это оффтоп. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/1147