ncurses: странное форматирование строк
У меня есть этот код для работы с ncurses:
#include <iostream>
#include <string>
#include <fstream>
#include <ncurses.h>
#include <cstdlib>
//char a='a';
int c=0;
bool ex = false;
void mva()
{
std::cout << "Nothing here yet, move along." << std::endl;
}
void cho()
{
std::cout << "Choose a valid option noob!" << std::endl;
}
void menu()
{
std::cout << "Welcome." << std::endl;
std::cout << "Choose an option" << std::endl;
std::cout << "1." << std::endl;
std::cout << "2." << std::endl;
std::cout << "3." << std::endl;
std::cout << "4. About" << std::endl;
std::cout << "5. exit" << std::endl;
}
void pause()
{
std::cin.get();
std::cin.ignore();
}
int main()
{
initscr();
//clear();
refresh();
//system("clear");
while (ex != true)
{
menu();
std::cin >> c;
switch (c)
{
case 1:
mva();
pause();
system("clear"); //unfortunately, there is no clean variant to this :(
break;
case 2:
mva();
pause();
break;
case 3:
mva();
pause();
break;
case 4:
std::cout << "About" << std::endl;
std::cout << "Programmed by nnmjywg." << std::endl;
pause();
break;
case 5:
std::cout << "Press enter to exit" << std::endl;
pause();
ex = true;
break;
default:
cho();
pause();
break;
}
}
endwin();
return 0;
}
Он должен работать нормально, но я совершенно сбит с толку, когда вижу это странное форматирование строки. Кроме того, я также не могу видеть, что я ввожу (с std::cin
)
1 ответ:
Когда ваша программа вызывает
initscr
, ncurses (фактически Любая реализация curses) инициализирует терминальные режимы, чтобы позволить печатать возврат каретки и перевод строки ("newline") сами по себе. Печать строчной подачи не приведет к возврату каретки.Но iostream
endl
это просто линия подачи. При печати наcout
таким образом, вы увидите лестничный.При использовании проклятий
cout
иcin
не очень полезны. Используйтеgetch
(илиwgetch
) для чтения вход. Кроме того, используйте проклятияecho
(илиnoecho
), чтобы контролировать, повторяют ли они вход, который вы даетеgetch
. Проклятияecho
не влияют наcin
(терминал также был настроен на не Эхо вход, и проклятия знают, когда эхо).Дальнейшее чтение: