2013-07-29 122 views
-1

我需要幫助解決這個問題。是否可以在cin之前打印文本。 例如:cout cin之前cin

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

所以我想第三cout到輸入名稱(cin)之前被顯示,使得第二= -line是可見的,而在該行進入上述的名稱。

對其進行可視化,我想創建一個屏幕匹配下面:

==================================== 
Enter your name: <CURSOR> 
==================================== 
+0

我想刪除''中COUT <<「\ N' ============ ======================== \ n「;' –

+5

'main'應該聲明爲'int main' – Lstor

+2

反轉cin和cout的順序行呢? – Borgleader

回答

3

如果我正確地讀你,你要光標神奇地跳回來,被旁邊的「名稱:」連打印更多輸出後。

這不適用於iostream風格的代碼。你必須使用一個特殊的庫...這是允許光標控制的東西,例如一個curses風格的功能。如果您的程序僅適用於Windows,則有Windows Console API

這些庫通常會爲您提供文本輸出的其他擴展,如設置顏色。但他們可以讓你的程序更便於攜帶。在我看來,通常最好避免它們。

然而,如果你想忽略的建議和嘗試...這裏的只有Windows版本的一些基礎知識:

Setting stdout/stderr text color in Windows

Setting the Cursor Position in a Win32 Console Application

......以及一些關於curses路線教程的信息,用於平臺獨立性:

Console interface tutorials and tips (pdcurses)

+0

我一定想嘗試一下。你能否發佈鏈接並解釋它是如何完成的?謝謝! –

+0

@ChinmayDabke添加了幾個鏈接,但是「Windows控制檯」和「curses」將成爲StackOverflow和其他地方的良好搜索關鍵字。 – HostileFork

+0

@ChinmayDabke我忽略了源代碼中的''頭文件,它實際上可能有['gotoxy()函數]](http://www.c4learn.com/gotoxy-function-conioh-header-file-move。 HTML)。但是那個文件只包含在真正的舊編譯器中,你應該避免使用它(並且可能在你編譯時得到一個新的編譯器)。 – HostileFork

1

stdio輸入/輸出方法適用於流。流是一些類型的輸出或輸入媒體,可能是文件,打印機,線路控制檯,網絡流,管道或其他輸入設備。這種抽象不允許改變已經寫入的內容。因此,無法在其他位置打印某些內容,然後跳回到較早的行(例如,打印機無法執行此操作)。

有一些庫,允許控制輸出到一些特殊的輸出設備。在Windows中,Win32ConsoleAPI代表了一個windows控制檯窗口,當然這個窗口能夠完成這項工作,因此爲您提供重新定位輸出光標的方法。

對於同樣的問題,一個更平臺無關的解決方案是一個名爲libncurses的庫,也可用於其他特殊終端類型(例如Linux控制檯)。

教程的libncurses-初學者:http://www.writeka.com/ed/ncurses_library.html

Windows控制檯API的參考:http://msdn2.microsoft.com/en-us/library/ms682087.aspx