2012-12-03 68 views
3

我試圖讓我在那裏做萊尼跳碼,但在lenny的臉這樣的:(͡°͜ʖ͡°)如何在Linux上使用ncurses顯示特殊字符?

當編譯&運行的代碼(G ++ -o萊尼main.cpp中),我得到輸出「(͡° 〜\ 〜͡°)」。有什麼方法可以讓它顯示(͡°͜ʖ͡°)?

+0

發佈您的代碼。 – Pubby

+0

http://codepad.org/z6MnmwcD – Predictability

+0

@Predictability最好在您的Stackoverflow帖子中包含源代碼。你可以做一個最小的完整的程序,只打印一個有問題的行,它會使實際的修復變得明顯。 – Cubbi

回答

0

您正在處理Unicode字符。你可以使用這個庫:ICU

查看更多here

+0

對於像這樣簡單的事情,ICU有點矯枉過正。 – bames53

0

Linux有良好的Unicode支持,你不需要任何特殊的圖書館,如果你正在做的是輸出:

#include <iostream> 
int main() 
{ 
    std::cout << "(͡° ͜ʖ ͡°)\n"; 
} 

在線演示:http://ideone.com/UUS6Il

或者,你不能依賴Linux內置的UTF-8並且明確地表示它:

#include <iostream> 
#include <locale> 
int main() 
{ 
    std::locale::global(std::locale("en_US.utf8")); 
    std::wcout.imbue(std::locale()); 
    std::wcout << L"(͡° ͜ʖ ͡°)\n"; 
} 

在線演示:http://ideone.com/EhTfB9

編輯:根據您在註釋中的代碼,您的問題實際上是關於ncurses庫I/O,而不是關於C++。爲了讓您的工作方案符合預期,

  1. 添加行setlocale(LC_ALL, "en_US.utf8");靠近你main()的開始(並添加#include <clocale>相應)
  2. 改變你的linkline使用-lncursesw,而不是-lncurses,如果這是你使用的是什麼。
+0

第二個會使用ncurses嗎? – Predictability