Nightmare1
@Nightmare1
Программист

В чем проблема с wofstream в linux?

В общем решил собрать модуль под CentOS 9, но споткнулся на коде

bool forceinline ForceWriteToFile(
        /* filepath. */ const std::wstring & filename,
        /* content body. */ const std::wstring & body)
    {
#ifdef __Windows__
        std::wofstream out(filename, std::ios::binary);
#else
        std::ofstream out(Machinarium::Utils::String::ToStdString(filename), std::ios::binary);
#endif

        if (out.fail()) {
            std::string a(filename.begin(), filename.end());
#ifdef Machinarium_Debug
            std::wcout << L"Failed to write to " << filename << L", FORCED unlinking." << std::endl;
#endif
            unlink(a.c_str());

#ifdef __Windows__
            out.open(filename);
#else
            out.open(Machinarium::Utils::String::ToStdString(filename));
#endif
            if (out.fail()) return false;
        }

#ifdef __Windows__
        out << body;
#else
        out << Machinarium::Utils::String::ToStdString(body);
#endif
        return true;
    }


При сборке возникает такая ошибка.

../src/Machinarium/Filesystem/FilesystemObject.cpp:106:86: ошибка: no matching function for call to «std::basic_ofstream<wchar_t>::basic_ofstream(std::wstring, std::_Ios_Openmode)»
  106 |         std::wofstream input(_path.wstring(), std::ofstream::out | std::ofstream::app);


Вопрос. Почему возникает ошибка типизации, т.е. wofstream в принципе не работает или чо? Ничо не понял.
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Zerg89
#ifdef __Windows__ std::wofstream out(filename, std::ios::binary); #else std::ofstream out(Machinarium::Utils::String::ToStdString(filename), std::ios::binary); #endif

Там не опечатка else ofstream? Насколько понял переменная wofstream не заполнена
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы