2013-07-29 89 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