Проблема заключается в том, что cmd.exe
(винд commad подскажет) имеет буфер фиксированного размера для отображение вывода. Если ваша программа записывает много результатов, будут отображаться только последние N строк, где N - размер буфера.
Вы можете избежать этой проблемы несколько способов:
записи в файл, вместо того, чтобы std::cout
. Весь ваш вывод будет записан в файл, который вы можете прочитать в текстовом редакторе по вашему выбору.
Перенаправить стандартный вывод в файл. Запустите программу как my_prog.exe > output.log
, и выход будет перенаправлен на output.log
.
Pipe ваш выход в команду more
, чтобы показать один экран одновременно: my_prog.exe | more
Увеличение размера буфера cmd.exe
. Если вы щелкните правой кнопкой мыши по строке заголовка окна команд, вы можете выбрать опцию меню Свойства. На вкладке Layout вы увидите раздел под названием Размер буфера экрана. Измените Высота на большее значение, и вы сможете захватить это множество линий вывода. Обратите внимание, что это несколько ненадежно, так как вы часто не знаете, как выполнить свою программу, сколько строк она выведет. Один из других подходов, использующих файлы, часто является лучшим решением.
Обратите внимание, что это не проблема с вашей программой на С ++. Весьма разумно иметь возможность производить большое количество выходных данных в стандартном потоке вывода. Лучшие решения - это те, которые перенаправляют или транслируют вывод в файл. Эти операции доступны на большинстве разумных платформ (и Windows), и делают именно то, что вам нужно, без необходимости менять вашу программу для записи в файл.
Если вы просто хотите проверить правильность, используйте встроенный отладчик. F10. – ZDF
Почему вы просто не перенаправляете вывод в файл, который затем можно открыть в текстовом редакторе? –