如何在没有代字替换的情况下获取真实文件名

时间:2013-11-14 20:54:36

标签: c++ tilde

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

1ZdjĂ“˘ciegĹ‚Ä,Ĺ.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);

“正确”(没有代字替换)文件名的示例: “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”

1 个答案:

答案 0 :(得分:1)

您可以致电GetLongPathName将短名称(NAME~1.EXT)转换为其长名称。