使用ncurse构建一个应用程序,该应用程序一次一个地使用一次击键来创建以下功能。
当用户按Tab键时,他当前的行将尝试自动完成。
使用getch(),我获取每个值并将其添加到缓冲区中,以便在用户按Enter键时使用。
每次击键后,屏幕都会刷新,缓冲区会重新绘制到屏幕上。
问题: 我通过这种方式消耗unicode字符会遇到很多麻烦。 示例:“Nìco”即将出现“NÃco”
答案 0 :(得分:0)
initscr();
cbreak();
noecho();
nonl();
move(0,0);
scrollok(stdscr, TRUE);
keypad(stdscr, TRUE);
while(TRUE){
int value = getch();
if( value == '\r' ){
int x,y;
getyx(stdscr,y,x);
move(y, 0);
/// add loop and push to buffer
char values[1024] = {};
winnstr(stdscr,values, 1024);
move(y+1, 0);
printw("buffer was %s", values);
move(0,0);
//break;
}
else {
addch(value);
}
}