Когда я использую систему («пауза»), на экране появляется строка «Нажмите любую клавишу, чтобы продолжить …».
Это раздражает и делает чтение вывода довольно громоздким.
Есть ли какой-нибудь способ остановить это?
Вы имеете в виду, что вы хотите нажать любую клавишу для продолжения, но не отображать «Нажмите любую клавишу для продолжения» на экране? Попробуй это getchar();
это захватит ввод одного символа с клавиатуры и продолжит.
Вместо использования платформы зависит system("pause")
Вы можете использовать платформу независимо std::cin.get()
и если буфер мешает с этим, вы можете использовать:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n')
перед рукой очистить буфер.
Если вы работаете в Windows, замените system("pause")
с system("pause > NULL")
,
Прежде всего, вы должны никогда использование 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()
например).
Эта линия является частью system("pause")
, Вы можете попробовать другой метод, такой как getline(std::cin, variable)
или же cin.get()
,
использование
system("pause>nul")
Это прекрасно работает для окон!