легкий цикл c ++ с паузой, но вывод очень странный! - PullRequest
0 голосов
/ 27 марта 2011

Я просто пытаюсь написать программу, которая выводит ряд чисел, перезаписывая друг друга в одной строке экрана консоли.как 10 9 8 7 6 и т. д.

Я использую xcode и компилирую в xcode.И это выводит "10 121469 121468", что я делаю не так?Почему это не кажется таким очевидным?

#include <iomanip>
#include <iostream>
using namespace std;

#ifdef __GNUC__
#include <unistd.h>
#elif defined _WIN32
#include <cstdlib>
#endif

int main()
{

  cout << "Description: This program will show you how much change" << endl;
  cout << "you will need to complete a transaction using a already" << endl;
  cout << "specified denomination" << endl << endl;

  cout << "CTRL=C to exit...\n";

  for (int units = 10; units > 0; units--)
  {
    cout << units << ' ';
    cout.flush();

#ifdef __GNUC__
    sleep(1); //one second
#elif defined _WIN32
    _sleep(1000); //one thousand milliseconds
#endif

    cout << '/r'; // CR
  }

  return 0;
} //main

Ответы [ 3 ]

4 голосов
/ 27 марта 2011

Я не знаю, отвечает ли это на ваш ответ, но я видел, что ваш CR неверен.

cout << '/r'; // CR

- это 2 символа (это ваш 12146, напечатанный на экране). Правильное значение должно быть

cout << '\r'; // CR
4 голосов
/ 27 марта 2011

Эта строка неверна:

cout << '/r'; // CR

Это два символа, вы хотите

cout << '\r'; // CR
1 голос
/ 28 марта 2011

При n * x я использую следующий управляющий код ANSI, чтобы удалить текущую строку и переместить курсор в начало.

\033[0F\033[2K

Так что вы бы использовали его следующим образом:

cout << "\033[0F\033[2K" << units << endl;

На следующей странице вы можете просмотреть все детали:

http://en.wikipedia.org/wiki/ANSI_escape_sequences

На этой странице также есть ссылка о том, как добиться аналогичных эффектов для окон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...