Как получить реальное имя файла без подстановки тильды

Я использую библиотеку 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);

Примеры «правильных» (без подстановки тильды) имен файлов:
«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»

0

Решение

Ты можешь позвонить GetLongPathName преобразовать короткое имя (ИМЯ ~ 1.EXT) в его длинное имя.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]