Obtenez de nom de fichier sans extension?
Je suis novice en C++ monde, j'ai collé avec un très banal problème c'est à dire de nom de fichier sans extension.
J'ai TCHAR
variable contenant sample.txt
, et le besoin d'extraire uniquement sample
, j'ai utilisé PathFindFileName
fonction, il vous suffit de renvoyer la même valeur que j'ai passé.
J'ai essayé de googler pour solution mais toujours pas de chance?!
EDIT: j'ai toujours trois lettre extension de fichier, j'ai ajouté le code suivant
mais à la fin j'obtiens quelque chose comme Montage (2)««þîþ
comment puis-je éviter indésirable caractères à la fin?
TCHAR* FileHandler::GetFileNameWithoutExtension(TCHAR* fileName)
{
int fileLength = _tcslen(fileName) - 4;
TCHAR* value1 = new TCHAR;
_tcsncpy(value1, fileName, fileLength);
return value1;
}
vous allouer une seule TCHAR
Vous devez marquer quelque chose comme une réponse, ou de préciser votre question pour obtenir la réponse que vous voulez.
Vous devez marquer quelque chose comme une réponse, ou de préciser votre question pour obtenir la réponse que vous voulez.
OriginalL'auteur Prashant C | 2011-07-11
Vous devez vous connecter pour publier un commentaire.
Voici comment c'est fait.
Cela renvoie une std::string ou un std::wstring, en fonction de l'UNICODE réglage. Pour revenir à un TCHAR*, vous avez besoin d'utiliser Chaînetapez::c_str(); C'est un pointeur const, donc vous ne pouvez pas le modifier, et il n'est pas valide d'après la chaîne de l'objet qui l'a produite, elle est détruite.
typedef std::basic_string<TCHAR> StringType;
serait plus propre.ne fonctionne pas bien dans le cas de quelque chose comme
abc_1.0.0.tar.gz
OriginalL'auteur Nicol Bolas
Vous pouvez utiliser PathRemoveExtension fonction pour supprimer l'extension de nom de fichier.
Pour obtenir uniquement le nom de fichier (avec extension), vous pouvez d'abord utiliser PathStripPath, suivie par
PathRemoveExtension
.OriginalL'auteur Ajay
Essayer ci-dessous la solution,
La "bonne" façon serait de regarder pour la dernière . dans le nom de fichier, cependant, il ya aussi la question cachée unix les fichiers qui commencent par un point (ex .gitignore, .hgignore)
Je ne pense pas
TCHAR
a substr méthode!Ensuite, vous devez vérifier pour la . en arrière?
il sera toujours extrait de
"sample"
, parce qu'ilfind()
pour la première"."
.OriginalL'auteur iammilind
J'ai juste corrigé exemple original, ce n'est pas une œuvre que je ne veux
OriginalL'auteur Ulterior
Essayez ceci:
En supposant que le nom de fichier est une chaîne de caractères.
Cela permettra de compter les lettres de votre nom de fichier d'origine et de les ajouter un par un à la nouvelle chaîne de nom de fichier.
Il y a plusieurs façons de le faire, mais ce est un moyen simple de le faire.
OriginalL'auteur Jason A.