在c ++中使用cin之前的cout

时间:2013-07-29 14:28:41

标签: c++ console-application iostream cursor-position

我需要帮助解决这个问题。是否可以在cin之前打印文本。 例如:

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

所以我希望在输入名称(cout)之前显示第三个cin,以便在输入上面一行中的名称时可以看到第二个= - 行。

要想象它,我正在尝试创建一个与下面相匹配的屏幕:

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

2 个答案:

答案 0 :(得分:3)

如果我没有正确读到你,你想让光标神奇地跳回来,并且即使在你打印了更多输出之后也要在“name:”旁边。

这在iostream风格的代码中不可用。你必须使用一个特殊的库...允许光标控制的东西,例如一个curses式的功能。如果您的程序仅限Windows,则有Windows Console API

这些库通常会为您提供文本输出的其他扩展,例如设置颜色。但它们可以使您的程序不那么便携。在我看来,通常最好避免它们。

然而,如果你想忽略这个建议并尝试一下......这里是windows-only版本的一些基础知识:

Setting stdout/stderr text color in Windows

Setting the Cursor Position in a Win32 Console Application

...以及有关curses路线的教程的一些信息,以获得平台独立性:

Console interface tutorials and tips (pdcurses)

答案 1 :(得分: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