我需要帮助解决这个问题。是否可以在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>
====================================
答案 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路线的教程的一些信息,以获得平台独立性:
答案 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