0

我使用 dirent.h 库来获取文件名。虽然他们中的大多数是正确的,但这个:

1ZdjĂ„„˘cie gĹ‚Ăłwne.JPG_38ba97e477158efb3563274f5bd39af7.jpg_cda6829b61253f64b44a5c7f15e00b45 - Copy.jpg

读作

1ZDJCI~2.JPG

我能做些什么来防止波浪替换行为?

我使用 Windows 7、Visual Studio C++

路径“./tiles/”

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);

examples of "correct" (without tilde substitution) file names: "2012-07-29- 227.jpg_955c70788013c4979d5cad857b49d4d2.jpg_8551b27380326b183c17e3469ec97cd3.jpg" "2012-07-29-228.jpg_5b2281bbe1efd6bd7469c4a29114a210.jpg_ee6d3a75864e7e33b3d99c023c962dbf.jpg" "2012-08-31- 842.jpg_93562fa908083e5a070467558bba2141.jpg_2e84cdbc1d5a5eb932a1373840119aa4.jpg"

4

1 回答 1

1

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

于 2013-11-14T21:15:30.750 回答