C++ ncurses UTF-8 问题

标签 c++ ncurses

当我运行这个程序时:

#include <iostream>
#include "ncurses.h"

using namespace std;

int main() {
    setlocale(LC_ALL, "Russian"); 
    const char *mesg = "Просто строка";
    initscr();
    scrollok(stdscr,TRUE);
    for(int i = 0; i < 10000; i++)
    {
        printw("%s %d \n", mesg, i);
        refresh();
    }
    getch();
    endwin();
    return 0;
}

我有这样的输出:

......
�~_�~@о�~A�~Bо �~A�~B�~@ока 9989
�~_�~@о�~A�~Bо �~A�~B�~@ока 9990
�~_�~@о�~A�~Bо �~A�~B�~@ока 9991
�~_�~@о�~A�~Bо �~A�~B�~@ока 9992
�~_�~@о�~A�~Bо �~A�~B�~@ока 9993
�~_�~@о�~A�~Bо �~A�~B�~@ока 9994
�~_�~@о�~A�~Bо �~A�~B�~@ока 9995
�~_�~@о�~A�~Bо �~A�~B�~@ока 9996
�~_�~@о�~A�~Bо �~A�~B�~@ока 9997
�~_�~@о�~A�~Bо �~A�~B�~@ока 9998
�~_�~@о�~A�~Bо �~A�~B�~@ока 9999

我是这样编译的: g++ main.cpp -o main -lncurses

我该如何解决这个问题?我在网上查了一下,没有解决办法。

我已经尝试了setlocale();的所有变体

最佳答案

没有这个 ncurses 库,但效果很好:

#include <iostream>

using namespace std;

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    const wchar_t *mesg = L"Просто строка";
    for(int i = 0; i < 10000; i++)
    {
        std::wcout << mesg << i << std::endl;;
    }
    return 0;
}

重要部分:setLocale()wchar_tstd::wcout

实际代码:http://goo.gl/MtzMAO

关于C++ ncurses UTF-8 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34177246/

相关文章:

android - adb shell android 上的 ncurses

C++ exp LUT(查找表)

c++ - 有没有办法替换库中的函数?

c++ - Ncurses 不检测击键

c++ - 如何使用 ncurses 在 C++ 上打印矩阵?

ncurses - 如何在 NCurses 中添加窗口填充?

c - 使用 pthreads 从终端写入和读取

c++ - 什么是 "__cdecl"?

c++ - 为什么输出显示为无符号数

c++ - 调试器在 Eclipse 中找不到源文件