4

私の質問は、以下のコードのような簡単な方法でWIN32またはGNUCコンパイラを使用して互いに上書きし、同じ行に10-0の数字を出力するにはどうすればよいですか。

これは私がこれまでに持っているものです:

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

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

int main()
{

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

  for (int units = 10; units > 0; units--)
  {
    cout << units << '\r';
    cout.flush();
#ifdef __GNUC__
    sleep(1); //one second
#elif defined _WIN32
    _sleep(1000); //one thousand milliseconds
#endif

    //cout << "\r";// CR

  }

  return 0;
} //main

しかし、これは印刷するだけです:

10 9 8 7 6 5 4 3 2 1

4

3 に答える 3

4

私はいくつかの本当に些細な変更を行いました(主にそれをクリーンアップして読みやすくするためだけに):

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

#ifdef __GNUC__
#include <unistd.h>
#define pause(n) sleep(n)
#elif defined _WIN32
#include <cstdlib>
#define pause(n) _sleep((n)*1000)
#endif

int main()
{

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

  for (int units = 10; units > -1; units--)
  {
    cout << setw(2) << setprecision(2) << units << '\r';
    cout.flush();
    pause(1);
  }
  return 0;
}

これは、VC++とCygwinの両方で正常に機能しました。mingwで動作しない場合は、実装の問題のように聞こえます。

于 2011-03-28T00:20:25.390 に答える
1

これにはncursesまたは別のライブラリを使用することをお勧めします。これを行うための標準的な方法はありません。

于 2011-03-28T00:14:50.660 に答える
0

バックスペース'\b'キャラクターを試しましたか?

于 2011-03-28T00:22:38.637 に答える