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(терминал также был настроен на не Эхо вход, и проклятия знают, когда эхо).Дальнейшее чтение: