разъяснение системы («пауза»)

Когда я использую систему («пауза»), на экране появляется строка «Нажмите любую клавишу, чтобы продолжить …».

Это раздражает и делает чтение вывода довольно громоздким.

Есть ли какой-нибудь способ остановить это?

1

Решение

Вы имеете в виду, что вы хотите нажать любую клавишу для продолжения, но не отображать «Нажмите любую клавишу для продолжения» на экране? Попробуй это getchar(); это захватит ввод одного символа с клавиатуры и продолжит.

5

Другие решения

Вместо использования платформы зависит system("pause") Вы можете использовать платформу независимо std::cin.get() и если буфер мешает с этим, вы можете использовать:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n')

перед рукой очистить буфер.

5

Если вы работаете в Windows, замените system("pause") с system("pause > NULL"),

3

Прежде всего, вы должны никогда использование system("pause") потому что это опасно. Ваш код будет вызывать внешнюю системную процедуру без причины; и взломщик может найти способ заменить команду «пауза» другой, заставляя вашу программу вызывать другую программу с вашими правами пользователя.

Тем не менее, вы можете избежать отправки сообщения null устройство.

  • В Windows:

    пауза> нуль

И если вы хотите быть смелым, чтобы сделать этот ужасный системный вызов переносимым, вы можете использовать:

  • на Linux:

    эхо Нажмите любую клавишу, чтобы продолжить …; читать х

Теперь вы можете применить ИЛИ ЖЕ а также А ТАКЖЕ (логические связки) для обоих и сделать системный вызов, который работает на обеих системах:

void pause(void)
{
system("echo Press any key to continue . . . && ( read x 2> nul; rm nul || pause > nul )");
return;
}

Linux создаст временный файл с именем «nul», потому что он не распознает это ключевое слово. Нулевое устройство на Linux /dev/null, не просто nul, После этого команда удалит этот временный файл с rm nul, Так что если у вас есть файл с именем nul имейте в виду, что эта команда не подходит для вас (по еще одной причине).

Эта команда имитирует оригинал. Если вы хотите, чтобы избежать сообщения, просто удалите echo Pres... Часть этого.


Бонус:

  • Очистите экран терминала переносно, используя system? (Нет, не делайте этого по тем же причинам. Это опасно.) Но для целей тестирования вы можете использовать:

system("cls||clear");


избежать pause, C — это язык, один из самых мощных языков, которые есть. Я уверен, что есть способ сделать pause используя только C (getchar() или же scanf() например).

0

Эта линия является частью system("pause"), Вы можете попробовать другой метод, такой как getline(std::cin, variable) или же cin.get(),

0

использование

system("pause>nul")

Это прекрасно работает для окон!

0
По вопросам рекламы [email protected]