Я использовал библиотеку std :: fstream и обнаружил, что она не может писать.Оказывается, это был mdash.
wchar_t mdash[] = { 0x2014, 0x0000 };
std::wfstream os("filename.txt", std::ios_base::out| std::ios_base::trunc);
os << mdash;
assert(!os.bad()); // fails
Я не контролирую, что я собираюсь записать в файл, поэтому мне нужен был способ правильно выписать файл, не выдавливая его.,Поэтому я написал эту функцию на основе этого ответа .
void set_locale_on_stream(std::wfstream &os)
{
char* locale = setlocale(LC_ALL, "English"); // Get the CRT's current locale.
std::locale lollocale(locale);
setlocale(LC_ALL, locale); // Restore the CRT.
os.imbue(lollocale); // Now set the std::wcout to have the locale that we got from the CRT.
}
Это сработало, за исключением того, что теперь у меня есть числа, в которые добавляются разделители групп, и они шестнадцатеричные, что делает егосовершенно бесполезно!
Есть ли способ остановить это?