-1

我需要帮助解决这个问题。是否可以打印之前的文本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>
====================================
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 初学者教程: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 回答