C++ncurses编码(UTF-8)问题
C++ ncurses encoding (UTF-8) troubles
当我运行此代码时:
#include <iostream>
#include "ncurses.h"
using namespace std;
std::string getstring()
{
std::string input;
nocbreak();
echo();
int ch = getch();
while ( ch != 'n' )
{
input.push_back( ch );
ch = getch();
}
return input;
}
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8");
initscr();
getstring();
endwin();
return 0;
}
键入ФЫВФЫВ
(俄语)终端显示:
CCD_ 2。这个问题只在我运行ncurses时出现,我的意思是,如果我运行std::cout << "ФЫВФЫВ";
,我会看到:ФЫВФЫВ
我的locale
输出:
LANG=ru_RU.UTF-8
LANGUAGE=ru
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
Ubuntu 15.04。
我该怎么修?
尝试使用
std::wstring c;
std::getline(std::wcin,c);
std::wcout << c;
而不是
setlocale(LC_ALL, "ru_RU.UTF-8");
#include <iostream>
#include "ncurses.h"
using namespace std;
std::string getstring()
{
std::string input;
nocbreak();
echo();
int ch = getch();
while ( ch != 'n' )
{
input.push_back( ch );
ch = getch();
}
return input;
}
int main() {
std::wstring c;
std::getline(std::wcin,c);
std::wcout << c;
initscr();
getstring();
endwin();
return 0;
}
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- HEX值到wchar_t字符(UTF-8)的转换
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- PostgreSQL C++ libpq 编码 UTF-8 问题
- C Unicode UTF-8解码字符的问题
- UTF-16LE 编码问题与 Qt 文本编辑器用 C++ 编写
- 在微控制器上编写 UART 控制台时出现 UTF-8 问题
- Qt 5编码问题(UTF-8、Windows-1250、Windows-1251)
- C++ncurses编码(UTF-8)问题
- C++处理UTF-8问题
- 用unicode文件名保存文件的问题-如何以跨平台的方式正确保存UTF-8文件名