C++ ncurses UTF-8问题
C++ ncurses UTF-8 problems
当我运行这个程序时:
#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_t
和std::wcout
。
实际代码:http://goo.gl/MtzMAO
当我运行这个程序时:
#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_t
和std::wcout
。
实际代码:http://goo.gl/MtzMAO