Какую команду использовать в visual studio 2017 для получения функциональности clrscr () в c ++? [Дубликат]

Используя ваш пример dataframe, мы могли бы:

xtabs(value ~ name + numbers, data = dat1)
69
задан Thomas B 26 June 2011 в 20:45
поделиться

18 ответов

Для Windows через Console API:

void clear() {
    COORD topLeft  = { 0, 0 };
    HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO screen;
    DWORD written;

    GetConsoleScreenBufferInfo(console, &screen);
    FillConsoleOutputCharacterA(
        console, ' ', screen.dwSize.X * screen.dwSize.Y, topLeft, &written
    );
    FillConsoleOutputAttribute(
        console, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE,
        screen.dwSize.X * screen.dwSize.Y, topLeft, &written
    );
    SetConsoleCursorPosition(console, topLeft);
}

Он с радостью игнорирует все возможные ошибки, но эй, это консольная очистка. Не похоже на то, что system("cls") лучше справляется с ошибками.

Для * nixes вы обычно можете использовать escape-коды ANSI, поэтому это будет:

void clear() {
    // CSI[2J clears screen, CSI[H moves the cursor to top-left corner
    std::cout << "\x1B[2J\x1B[H";
}

Используя system потому что это просто уродливо.

44
ответ дан Cat Plus Plus 23 August 2018 в 01:33
поделиться
// #define _WIN32_WINNT 0x0500     // windows >= 2000 
#include <windows.h> 
#include <iostream>

using namespace std; 

void pos(short C, short R)
{
    COORD xy ;
    xy.X = C ;
    xy.Y = R ;
    SetConsoleCursorPosition( 
    GetStdHandle(STD_OUTPUT_HANDLE), xy);
}
void cls( )
{
    pos(0,0);
    for(int j=0;j<100;j++)
    cout << string(100, ' ');
    pos(0,0);
} 

int main( void )
{
    // write somthing and wait 
    for(int j=0;j<100;j++)
    cout << string(10, 'a');
    cout << "\n\npress any key to cls... ";
    cin.get();

    // clean the screen
    cls();

    return 0;
}
4
ответ дан Firefox_ 23 August 2018 в 01:33
поделиться

Самый простой способ - очистить поток несколько раз (в идеале больше, чем любая возможная консоль). 1024 * 1024, вероятно, не может быть никаким консольным окном.

int main(int argc, char *argv)
{
  for(int i = 0; i <1024*1024; i++)
      std::cout << ' ' << std::endl;

  return 0;
}

Единственная проблема с это программный курсор; эта мигающая вещь (или не мигающая вещь) в зависимости от платформы / консоли будет в конце консоли, против нее. Однако это никогда не должно вызывать никаких проблем.

-7
ответ дан graphitemaster 23 August 2018 в 01:33
поделиться
#include <cstdlib>

void cls(){
#if defined(_WIN32) //if windows
    system("cls");

#else
    system("clear");    //if other
#endif  //finish

}

Единственный вызов cls () где угодно

-2
ответ дан jdb_jdb 23 August 2018 в 01:33
поделиться
  • 1
    Это не то, что ищет OP. Прочтите комментарий, добавленный к вопросу. – Agi Hammerthief 7 August 2017 в 08:04

Это трудно сделать при просмотре MAC, поскольку он не имеет доступа к функциям Windows, которые могут помочь очистить экран. Мое лучшее исправление заключается в цикле и добавлении строк до тех пор, пока терминал не станет ясным, а затем запустите программу. Однако это не так эффективно или полезно для памяти, если вы используете это в первую очередь и часто.

void clearScreen(){
    int clear = 5;
    do {
        cout << endl;
        clear -= 1;
    } while (clear !=0);
}
1
ответ дан Max Goddard 23 August 2018 в 01:33
поделиться

Для чистого C ++

Вы не можете. C ++ даже не имеет концепции консоли.

Программа может печатать на принтере, выводить прямо в файл или перенаправляться на вход другой программы для всего, что ей нужно. Даже если вы можете очистить консоль на C ++, это сделает эти случаи значительно более беспорядочными.

См. Эту запись в FAQ comp.lang.c ++:

OS-Specific

Если у вас все еще есть смысл очистить консоль в вашей программе, и вас интересуют решения, зависящие от операционной системы, они существуют.

Для Windows (как в вашем теге) ознакомьтесь с этой ссылкой:

Изменить: этот ответ ранее упоминался с помощью system("cls");, поскольку Microsoft заявила сделай это. Однако в комментариях было указано, что это не безопасно делать . Из-за этой проблемы я удалил ссылку на статью Microsoft.

Библиотеки (несколько портативные)

ncurses - это библиотека, которая поддерживает консольные манипуляции:

56
ответ дан Merlyn Morgan-Graham 23 August 2018 в 01:33
поделиться
  • 1
    Erm, вопрос имеет тег windows ... – Joey 26 June 2011 в 20:52
  • 2
    -1 void main недействителен. – Cheers and hth. - Alf 27 June 2011 в 00:29
  • 3
    @Alf: я скопировал это из статьи MS, так что уменьшите их, а не меня;) Я все же исправлю. – Merlyn Morgan-Graham 27 June 2011 в 00:31
  • 4
    происхождение не имеет значения - код, который даже не компилируется (с g ++), не является хорошим. Но так как вы исправили его, я удалил downvote. :-) – Cheers and hth. - Alf 27 June 2011 в 00:33
  • 5
    @YoushaAleayoub отредактировал ответ, чтобы удалить ссылку MS, предлагающую использовать system, и добавил ссылку на вашу статью, объясняющую почему. – Merlyn Morgan-Graham 12 April 2018 в 20:28

Используйте system("cls"), чтобы очистить экран:

#include <stdlib.h>

int main(void)
{
    system("cls");
    return 0;
}
3
ответ дан nateyolles 23 August 2018 в 01:33
поделиться

Для Linux / Unix и, возможно, для некоторых других, но не для Windows до 10 TH2:

printf("\033c");

сбросит терминал.

10
ответ дан NoAngel 23 August 2018 в 01:33
поделиться

edit: полностью переделанный вопрос

Просто проверьте, в какой системе они включены, и отправьте системную команду в зависимости от системы. хотя это будет установлено во время компиляции

#ifdef __WIN32
    system("cls");
#else
    system("clear"); // most other systems use this
#endif

Это совершенно новый метод!

-2
ответ дан OverloadedCore 23 August 2018 в 01:33
поделиться
  • 1
    Очень очень плохой способ сделать это. Кроме того, это не очистка консоли, а только добавление пустых строк. Не собираюсь помогать. – Vishnu Narang 16 September 2016 в 05:44
  • 2
    Чтобы добавить оскорбление к травме, cout может быть перенаправлен в файл. Тогда нет никакой концепции консоли вообще. – Tanveer Badar 4 August 2017 в 16:10

В Windows:

#include <cstdlib>

int main() { 
    std::system("cls");
    return 0;
}

В Linux / Unix:

#include <cstdlib>

int main() { 
    std::system("clear");
    return 0;
}
2
ответ дан pmttavara 23 August 2018 в 01:33
поделиться

вывод нескольких строк в консоль окон бесполезен. Он просто добавляет к нему пустые строки. К сожалению, путь относится к конкретным окнам и включает в себя либо conio.h (и clrscr () может не существовать, это также не стандартный заголовок), либо метод Win API

#include <windows.h>

void ClearScreen()
  {
  HANDLE                     hStdOut;
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  DWORD                      count;
  DWORD                      cellCount;
  COORD                      homeCoords = { 0, 0 };

  hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );
  if (hStdOut == INVALID_HANDLE_VALUE) return;

  /* Get the number of cells in the current buffer */
  if (!GetConsoleScreenBufferInfo( hStdOut, &csbi )) return;
  cellCount = csbi.dwSize.X *csbi.dwSize.Y;

  /* Fill the entire buffer with spaces */
  if (!FillConsoleOutputCharacter(
    hStdOut,
    (TCHAR) ' ',
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Fill the entire buffer with the current colors and attributes */
  if (!FillConsoleOutputAttribute(
    hStdOut,
    csbi.wAttributes,
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Move the cursor home */
  SetConsoleCursorPosition( hStdOut, homeCoords );
  }

. Для системы POSIX это проще, вы могут использовать ncurses или терминальные функции

#include <unistd.h>
#include <term.h>

void ClearScreen()
  {
  if (!cur_term)
    {
    int result;
    setupterm( NULL, STDOUT_FILENO, &result );
    if (result <= 0) return;
    }

  putp( tigetstr( "clear" ) );
  }
4
ответ дан Swift - Friday Pie 23 August 2018 в 01:33
поделиться
0
ответ дан user 23 August 2018 в 01:33
поделиться

Чтобы очистить экран, вам сначала необходимо включить модуль:

#include <stdlib.h>

, это приведет к вводу команд Windows. Затем вы можете использовать функцию «system» для запуска командных команд (которые редактируют консоль). В Windows на C ++ команда очистки экрана будет выглядеть так:

system("CLS");

И это очистит консоль. Весь код будет выглядеть так:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
system("CLS");
}

И это все, что вам нужно! Goodluck:)

2
ответ дан user3179329 23 August 2018 в 01:33
поделиться
  • 1
    система («cls») не является переносным решением этой проблемы, однако она работает в системах Windows. – CMS_95 29 September 2015 в 19:52
  • 2
    Это не «модуль». C ++ не имеет «модулей». Кроме того, stdlib.h задается стандартом C и не имеет ничего общего с "импортом команд Windows" ни сама Windows. Кроме этого придирки, все в порядке. – Lightness Races in Orbit 19 October 2015 в 23:13

Использовать System :: Console :: Clear ();

Это очистит (пуст) буфер

-1
ответ дан user3882139 23 August 2018 в 01:33
поделиться

Это ДЕЙСТВИТЕЛЬНО изменчиво, но попробуйте:

void cls() {
    for (int i = 0; i < 250; ++i) {
        std::cout << endl;
    }
}
2
ответ дан venerik 23 August 2018 в 01:33
поделиться
  • 1
    Добро пожаловать в Stackoverflow! Я сделал редактирование для вашего кода: для блоков кода вы не должны использовать qoutes, но идентифицировать его. – venerik 12 March 2016 в 21:13

use: clrscr ();

#include <iostream>
using namespace std;
int main()
      {           
         clrscr();
         cout << "Hello World!" << endl;
         return 0;
      }
-3
ответ дан vijay 23 August 2018 в 01:33
поделиться
0
ответ дан Joma 5 November 2018 в 23:13
поделиться
-2
ответ дан OverloadedCore 5 November 2018 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: