2012-12-15 61 views
0

問題是MinGW編譯的程序在通過wcout在控制檯上打印非ASCII字符時出現問題,輸出可能會顯示來自不同代碼頁的字符或完全空白。但winapi WriteConsoleW完美的作品。所以我問是否有可能改變< <運算符的行爲,所以它會調用winapi方法。是否可以重載wcout <<運算符來用WriteConsoleW代替它?

(我沒有找到任何示例如何做到這一點,我是新來的C++,有很多例子如何重載一個對象,但不是如何使用字符串或寬字符數組來做到這一點。)

+1

是的,我認爲streambuf是正確的做法。 –

回答

2

您可以創建一個合適的流緩衝區,在需要發送字符的地方發送字符。您可以使用rdbuf()設置std::wcout使用的流緩衝區。我認爲我以前沒有提供過使用wchar_t作爲字符類型的示例,但它可以像char的大量示例一樣工作。