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 в принципе не работает или чо? Ничо не понял.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 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 не заполнена
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект