gpt4 book ai didi

c++ - SDL2加载特殊字 rune 件

转载 作者:行者123 更新时间:2023-11-28 04:36:06 28 4
gpt4 key购买 nike

我遇到了一个问题,那就是:在使用 SDL2 和 SDL2_Image 的 Windows 应用程序中,它打开图像文件,以便稍后保存它们并修改图像数据。当它打开一张没有特殊字符(比如áéíóúñ,比如“buenos aires.jpg”)的图片时,它按预期工作。 但是,如果有任何提到的特殊字符(例如,“córdoba.jpg”),SDL_Image 会生成错误消息“无法打开文件”。不管怎样,如果我将 std::ifstream 通量与我从 CSV 文件中获得的确切文件名一起使用(冗余,如 "córdoba.jpg" 或 "misió nes.jpg"), ifstream 运行良好...使用特殊字符是否出错? UNICODE、UTF,有关系吗?

有关环境的一些信息:Windows 10(西类牙语、拉丁美洲)、SDL2 和 SDL2_Image(最新版本)、使用 Mingw64 7.1.0 的 GCC 编译器

关于我正在尝试制作的软件:它使用 CSV 格式,带有阿根廷各州的名称,已经尝试更改 .CSV 上的编码。它根据在 CSV 中找到的名称加载图像、更改它们并保存。
我知道也许我缺少一些基本的东西,但我的资源已经耗尽了。

最佳答案

IMG_Load() forwards its file argument directly to SDL_RWFromFile() :

// http://hg.libsdl.org/SDL_image/file/8fee51506499/IMG.c#l125
SDL_Surface *IMG_Load(const char *file)
{
SDL_RWops *src = SDL_RWFromFile(file, "rb");
const char *ext = SDL_strrchr(file, '.');
if(ext) {
ext++;
}
if(!src) {
/* The error message has been set in SDL_RWFromFile */
return NULL;
}
return IMG_LoadTyped_RW(src, 1, ext);
}

SDL_RWFromFile()file 参数应该是一个 UTF-8 字符串:

SDL_RWops* SDL_RWFromFile(const char* file,
const char* mode)

Function Parameters:

  • file: a UTF-8 string representing the filename to open
  • mode: an ASCII string representing the mode to be used for opening the file; see Remarks for details

因此将 UTF-8 路径传递给 IMG_Load()

C++11 有 UTF-8 string literal通过 u8 前缀支持内置:

IMG_Load( u8"córdoba.jpg" );

关于c++ - SDL2加载特殊字 rune 件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51393849/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com