-1

この問題について助けが必要です。の前にテキストを印刷することは可能ですかcin。例えば:

#include<iostream>
#include<conio.h>
void main ()
{
char name[20];
cout<<"====================================\n";
cout<<"Enter your name: ";
cin>>name;
cout<<"\n====================================";
getch();
}

そのため、名前を入力する前に3 番目の行coutを表示して ( cin)、=上の行に名前を入力しているときに 2 行目が表示されるようにします。

それを視覚化するために、以下に一致する画面を作成しようとしています:

====================================
Enter your name: <CURSOR>
====================================
4

2 に答える 2

3

私が正しく読んだ場合、さらに出力を印刷した後でも、カーソルが魔法のように戻って「名前:」の隣にあることを望んでいます。

これは、iostream スタイルのコードでは使用できません。そのためには特別なライブラリを使用する必要があります...カーソル制御を可能にするもの、たとえばcursesスタイルの機能。プログラムが Windows のみの場合は、Windows コンソール APIがあります。

これらのライブラリは、多くの場合、色の設定など、テキスト出力に他の拡張機能を提供します。ただし、プログラムの移植性が低下する可能性があります。私の意見では、通常はそれらを避けるのが最善です。

ただし、そのアドバイスを無視して試してみたい場合は、Windows のみのバージョンの基本を次に示します。

Windows で stdout/stderr テキストの色を設定する

Win32 コンソール アプリケーションでのカーソル位置の設定

...プラットフォームに依存しないための、curses ルートのチュートリアルに関する情報:

コンソール インターフェイスのチュートリアルとヒント (pdcurses)

于 2013-07-29T14:37:38.310 に答える
1

入力/出力メソッドはstdioストリームで機能します。ストリームはある種の出力または入力メディアであり、ファイル、プリンター、ライン コンソール、ネットワーク ストリーム、パイプ、またはその他の入力デバイスの場合があります。この抽象化では、既に作成されたものを変更することはできません。このため、何かを別の下に印刷してから、前の行にジャンプすることはできません (たとえば、プリンターはそうすることができません)。

いくつかの特別な出力デバイスへの出力を制御できるライブラリがいくつかあります。Windows では、Win32ConsoleAPI は Windows コンソール ウィンドウを表します。これはもちろん、ジョブを実行できるため、出力カーソルの位置を変更するメソッドを提供します。

同じ問題に対するよりプラットフォームに依存しない解決策は、と呼ばれるライブラリlibncursesであり、他の特別な端末タイプ (Linux コンソールなど) でも利用できます。

libncurses-beginners のチュートリアル: http://www.writeka.com/ed/ncurses_library.html

Windows コンソール API リファレンス: http://msdn2.microsoft.com/en-us/library/ms682087.aspx

于 2013-07-29T14:40:58.497 に答える