2016-08-13 10 views
0

現在、コンソールに何かを印刷しようとしています。 "\ r"を使用して同じ行に読み込むのと同様ですが、代わりにendlが含まれています。C++でendlの後に最初から印刷する方法は?

#include <iostream> 

int main(int argc, char **argv) 
{ 
    int x = 3; 
    // first part 
    std::cout << " x = " << x <<"\n"; 
    std::cout << " y = " << x <<"\n"; 
    std::cout << " z = " << x << "\n"; 

    std::cin >> x ; 
    std::cout << "\r" << std::flush; 
    // second part 
    std::cout << " x = " << x <<"\n"; 
    std::cout << " y = " << x <<"\n"; 
    std::cout << " z = " << x <<"\n"; 

    return 0; 
} 

上記のコードは、最初の部分を印刷し、2番目の部分を別の場所に再印刷します。したがって、列の合計は8です。私が実際に望むのは、ユーザーからの最初の部分入力を印刷して、最初の部分を2番目の部分に置き換えることです。この方法では合計列は3です。

答えて

2

バックスペース文字'\b'を記述すると、行の前に移動することができます。これはカーソルを動かすだけなので、バックアップした後でコンテンツを書き込む必要があります。

'\e[A''\e[B'を使用して下に移動することができます。

注:このソリューションはあまりポータブルではありませんが、状況に応じて動作しますか?

複数の行を移動したり、画面全体を消去する場合は、システム固有の機能を調べることもできます。

+0

"\ b"は同じ行で作業しているにすぎないことに気付きました。 "\ e [A]はここでうまくいきます。 – pokche

+0

あなたのニーズに合った素晴らしい、嬉しい!それに応じて更新します。 –

関連する問題