Как правильно остановить программу?
Для того, чтобы посмотреть вывод программы, ее вовсе не надо останавливать - достаточно настроить IDE так, чтобы она не закрывала терминал после завершения программы.

Если сильно хочется, можно использовать вот такой код:
#include <ios>      // Required for streamsize
#include <iostream>
#include <istream>
#include <limits>   // Required for numeric_limits

void myflush ( std::istream& in )
{
  in.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' ); // опустошаем все что есть в буфере
  in.clear();
}

void mypause() 
{ 
  std::cout<<"Press [Enter] to continue . . ."; // собственно, пауза
  std::cin.get();
}
Источник
Использование же system("pause") - костыль, к использованию не годится никогда.
Это медленно. Это зависит от платформы. Это небезопасно.
Цитата взята отсюда