Ошибка вывода потока Windows Unicode C ++

В настоящее время я пишу приложение, которое требует от меня вызова GetWindowText в произвольных окнах и сохранения этих данных в файл для последующей обработки. Короче говоря, я заметил, что мой инструмент не работал в Battlefield 3, и я сузил проблему до следующего символа в заголовке окна:http://www.fileformat.info/info/unicode/char/2122/index.htm

Итак, я создал небольшое тестовое приложение, которое просто делает следующее:

std::wcout << L"\u2122";

Низкий и вот, что прерывает вывод в окно консоли на оставшуюся часть программы.

Почему MSVC STL задыхается от этого символа (и, я полагаю, других), когда такие API, как MessageBoxW и т. Д., Отображают его нормально?

Как я могу распечатать эти символы в моем файле?

Протестировано на VC10 и VC11 под Windows 7 x64.

Извините за плохо построенный пост, я рву свои волосы здесь.

Благодарю.

РЕДАКТИРОВАТЬ:

Минимальный контрольный пример

#include <fstream>
#include <iostream>

int main()
{
  {
    std::wofstream test_file("test.txt");
    test_file << L"\u2122";
  }

  std::wcout << L"\u2122";
}

Ожидаемый результат: символ «™» напечатан на консоли и в файле. Наблюдаемый результат: файл создан, но пуст. Нет вывода на консоль.

Я подтвердил, что шрифт, который я использую для своей консоли, способен отображать соответствующий символ, и файл определенно пуст (размером 0 байт).

РЕДАКТИРОВАТЬ:

Дальнейшая отладка показывает, что 'failbit' и 'badbit' установлены в потоке (ах).

РЕДАКТИРОВАТЬ:

Я также попытался использовать Boost.Locale, и у меня возникла та же проблема, даже с новой локалью, распространенной глобально и явно для всех стандартных потоков.

Ответы на вопрос(4)

Ваш ответ на вопрос