在c++中,cout先于cin

cout before cin in c++

本文关键字:先于 cin cout c++      更新时间:2023-10-16

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

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

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

为了将其可视化,我正在尝试创建一个与以下内容匹配的屏幕:

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

如果我没有看错,即使在打印了更多输出之后,您也希望光标神奇地跳回并位于"name:"旁边。

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

这些库通常为文本输出提供其他扩展,比如设置颜色。但它们会降低程序的可移植性。在我看来,通常最好避开它们。

然而,如果你想忽略这个建议并尝试它…以下是仅限windows版本的一些基本信息:

在Windows 中设置stdout/stderr文本颜色

在Win32控制台应用程序中设置光标位置

以及一些关于curses路线教程的信息,用于平台独立性:

控制台界面教程和提示(pdcurses)

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