cout перед Cin в C++
Мне нужна помощь с этой проблемой. Можно ли напечатать текст раньше? 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 ответа
Если я правильно вас понял, вы хотите, чтобы курсор волшебным образом отскочил назад и оказался рядом с "name: " даже после того, как вы напечатали больше выходных данных.
Это не доступно в коде в стиле iostream. Вы должны использовать специальную библиотеку для этого... что-то, что позволяет управлять курсором, например, функциональность стиля curses. Существует API консоли Windows, если ваша программа только для Windows.
Эти библиотеки часто дают вам другие расширения для текстового вывода, такие как установка цветов. Но они могут сделать вашу программу менее переносимой. Обычно лучше всего избегать их, на мой взгляд.
Однако, если вы хотите проигнорировать этот совет и попробовать его... вот некоторые основы версии только для Windows:
Настройка цвета текста stdout / stderr в Windows
Установка положения курсора в консольном приложении Win32
... и некоторую информацию об учебных курсах по маршруту curses для независимости от платформы:
stdio
Метод ввода / вывода работает на потоках. Потоки являются своего рода средством вывода или ввода и могут быть файлом, принтером, линейной консолью, сетевым потоком, каналом или каким-либо другим устройством ввода. Эта абстракция не позволяет изменить то, что уже написано. Из-за этого невозможно распечатать что-то ниже чего-то другого, а затем вернуться к более ранней строке (например, принтер не может это сделать).
Есть несколько библиотек, которые позволяют контролировать вывод на некоторые специальные устройства вывода. В окнах Win32ConsoleAPI представляет окно консоли Windows, которое, разумеется, может выполнять эту работу и, таким образом, предоставляет методы для изменения положения выходного курсора.
Более платформенно-независимым решением для тех же проблем является библиотека под названием libncurses
и доступен для других специальных типов терминалов (например, для консоли Linux).
Учебник для начинающих libncurses: http://www.writeka.com/ed/ncurses_library.html
Справочник по API консоли Windows: http://msdn2.microsoft.com/en-us/library/ms682087.aspx