Manipulator bezargumentowy pause

0

Witam!
Napotkałem się z czymś takim jak stwierdzenie, że "pause" jest manipulatorem bezargumentowym strumienia. Jeśli dobrze zrozumiałem to chodzi to o coś takiego:

cout << pause;

Nie jestem pewien czy taki zapis ma jakiś sens i czy jest on w jakiś sposób poprawny.
Czy mógłby ktoś spróbować wyjaśnić mi o co w tym chodzi ? Dodam, że szukając odpowiedzi na to pytanie zauważyłem, że w często wyszukiwanych frazach w Internecie jest "pause after cout c++", więc najprawdopodobniej nie tylko mnie ciekawi czy jest coś takiego możliwe :D.
Pozdrawiam!

1

Nic takiego nie ma w standardzie, ale jak najbardziej można coś takiego zrobić - tylko po co? Do sleepa jest sleep_for, a jak chcesz poczekać na input użytkownika to lepiej to zrobić osobno.

3

Coś źle przeczytałeś.

Pewnie masz na myśli coś takiego:

system("pause");

które było/jest wstawiane, do domyślnej implementacji main nowego projektu konsolowego w VisualStudio.
Ten hack był sposobem, by podtrzymać okno konsoli, zanim program się zakończy, aby użytkownik miał czas zobaczyć wynik na ekranie.
Jest to zła praktyka, bo działa tylko na Windows i jest okropnym rozwiązaniem, prostego problemu.

0

@kq:
Dziękuje za odpowiedź! Kieruje mną czysta ciekawość jak takie coś zrealizować . Czyli najprościej jest w takim przypadku zdefiniować własny manipulator strumienia "pause", tak ??

3
template<class CharT, class Traits>
std::basic_ostream<CharT, Traits>&
pause(std::basic_ostream<CharT, Traits>& stream)
{
    this_thread::sleep_for(2000ms);
    return stream << flush;
}

std::ios_base& wait_for_input(std::ios_base& s)
{
    char c;
    std::cin.read(&c, 1);
    return s;
}

int main()
{
    cout << "ALA" << pause << " MA " << pause << "KOTA\n";
    cout << "ALA" << wait_for_input << " MA " << wait_for_input << "KOTA\n";
}

Żeby nie było: to nie jest dobre rozwiązanie i go nie polecam. Ale tak możesz je wykonać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1