Я хочу сохранить файл с именем Привет Мир.jpg
Я получаю строку (например, прочитать ее из файла) (с Юникодом в ней), но мой код C ++ сохраняет ее как ÐÑÐ¸Ð²ÐµÑ ÐиÑ.jpg
Что мне делать, чтобы сохранить его правильно? (Кстати, если я просто сохраню эту строку в файл, она будет сохранена правильно, то есть только то, как я сохраню имя файла, будет неправильно. Как это исправить?)
Вот мой код для сохранения файла:
void file_service::save_string_into_file( std::string contents, std::string name )
{
std::string pathToUsers = this->root_path.string() + "/users/";
boost::filesystem::path users_path ( this->root_path / "users/" );
users_directory_path = users_path;
general_util->create_directory(users_directory_path);
std::ofstream datFile;
name = users_directory_path.string() + name;
datFile.open(name.c_str(), std::ofstream::binary | std::ofstream::trunc | std::ofstream::out );
datFile.write(contents.c_str(), contents.length());
datFile.close();
}
, где
void general_utils::create_directory( boost::filesystem::path path )
{
if (boost::filesystem::exists( path ))
{
return;
}
else
{
boost::system::error_code returnedError;
boost::filesystem::create_directories( path, returnedError );
if ( returnedError )
{
throw std::runtime_error("problem creating directory");
}
}
}
Обновление: с помощью Теперь у меня есть
void file_service::save_string_into_file( std::string contents, std::string s_name )
{
boost::filesystem::path users_path ( this->root_path / "users" );
users_directory_path = users_path;
general_util->create_directory(users_directory_path);
boost::filesystem::ofstream datFile;
boost::filesystem::path name (users_directory_path / s_name);
datFile.open(name, std::ofstream::binary | std::ofstream::trunc | std::ofstream::out );
datFile.write(contents.c_str(), contents.length());
datFile.close();
}
Но когда я сохраняю файл, он сохраняет имя файла как Привет РњРёСЂ.jpg
, так что ... Что мне теперь делать?