开发者

easy c++ loop with pause but output is very weird!

I'm just trying to write a program which outputs a series of numbers overwriting one another on the same line of the console screen. like 10 9 8 7 6 etc.

I'm using xcode and compiling in xcode. And this outputs "10 121469 121468", what am I doing wrong? Why doesn't it seem so obvious?

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

#ifdef __GNUC__
#include 开发者_C百科<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


I don't know if this answers your answer but I've seen that your CR is wrong.

cout << '/r'; // CR

is 2 characters (which is your 12146 printed on the screen). The correct value must be

cout << '\r'; // CR


This line is wrong:

cout << '/r'; // CR

That's two characters, you want

cout << '\r'; // CR


On n*x I use the following ANSI escape code to delete the current line and move the cursor to the beginning.

\033[0F\033[2K

So you would use it in the following way:

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

On the following page you can peruse all the details:

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

There's also a link on that page for how to achieve similar effects for windows.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜