2

使用 ncurse 构建一个应用程序,该应用程序一次使用用户的一次击键来创建以下功能。

当用户按下制表符时,他的当前行将尝试自动完成。

使用 getch(),我获取每个值并将其添加到缓冲区中,以便在用户按 Enter 时使用。

每次击键后,屏幕都会刷新,缓冲区会重新绘制到屏幕上。

问题:我在以这种方式使用 unicode 字符时遇到了很多麻烦。示例:“Nìco”正在出现“Nìco”

4

1 回答 1

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);
    }
}
于 2012-08-09T01:57:10.707 回答