Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在不使用平铺替换的情况下获取真实文件名_C++_Tilde - Fatal编程技术网

C++ 如何在不使用平铺替换的情况下获取真实文件名

C++ 如何在不使用平铺替换的情况下获取真实文件名,c++,tilde,C++,Tilde,我使用dirent.h库获取文件名。虽然大多数都是正确的,但这一条: 1ZdjĂĂcie gÄýýýýýu 38BA97E47715EFB3563274F5BD39AF7.JPGýu cda6829b61253f64b44a5c7f15e00b45-Copy.JPG 读作 1ZDJCI~2.JPG 我可以做些什么来防止波浪线替代行为 我使用Windows7,VisualStudioC++ 路径“/tiles/” “正确”(无波浪线替换)文件名示例: "2012-07-29- 227.jpg_95

我使用dirent.h库获取文件名。虽然大多数都是正确的,但这一条:

1ZdjĂĂcie gÄýýýýýu 38BA97E47715EFB3563274F5BD39AF7.JPGýu cda6829b61253f64b44a5c7f15e00b45-Copy.JPG

读作

1ZDJCI~2.JPG

我可以做些什么来防止波浪线替代行为

我使用Windows7,VisualStudioC++

路径“/tiles/”

“正确”(无波浪线替换)文件名示例: "2012-07-29- 227.jpg_955c70788013c4979d5cad857b49d4d2.jpg_8551b27380326b183c17e3469ec97cd3.jpg“ “2012-07-29-228.jpgu 5B2281BBEEFD6BD7469C4A29114A210.jpgu ee6d3a75864e7e33b3d99c023c962dbf.jpg”
“2012-08-31-842.jpg_93562fa908083e5a070467558bba2141.jpg_2E84CDBC1D5A5EB932A13373840119AA4.jpg”

您可以调用将短名称(名称~1.EXT)转换为长名称。

。。。是否有合理的文件名?如何获取文件名?'dirent.h`-这是一个POSIX compat接口,列出一些“正确”的文件名。您使用的方法可能不支持Unicode和/或长路径。可能使用UTF-16 Win32函数并转换回UTF-8或任何您想要使用的编码?除非你需要跨平台的东西。
DIR *dir;
struct dirent *ent;
if ((dir = opendir(path.c_str())) != NULL) {
while ((ent = readdir(dir)) != NULL) {
if( strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0 ) { continue; }
string a(ent->d_name);