Bonjour,
Je développe actuellement un soft en C++. A un moment j'ai besoin de lancer un autre executable par ligne de commande. Cet executable a besoin d'un paramètre en entrée de type "chemin de fichier".
voici mon code :
Si le chemin de l'exe et du paramètre ne comportent pas d'espace, ce code fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
	const char guillemet = 0x22;
             const char espace = 0x20;
	std::string cheminExe = _config->getDossierRessources();
	std::string parametres = _config->getCheminPrincipalSauvegarde() ;		
             std::string commande = cheminExe + espace + parametres;
	int resultat = system(commande.c_str());
Si le chemin de l'exe contient des espace mais que le chemin du paramètre ne contient pas d'espace, le code suivant fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
	const char guillemet = 0x22;
             const char espace = 0x20;
	std::string cheminExe = _config->getDossierRessources();
	std::string parametres = _config->getCheminPrincipalSauvegarde() ;		
             std::string commande = guillemet + cheminExe + guillemet + espace + parametres;
	int resultat = system(commande.c_str());
Le problème que j'ai est la gestion du cas où les deux chemins contiennent des espaces. J'ai essayé le code suivant : mais il ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
	const char guillemet = 0x22;
             const char espace = 0x20;
	std::string cheminExe = _config->getDossierRessources();
	std::string parametres = _config->getCheminPrincipalSauvegarde() ;		
             std::string commande = guillemet + cheminExe + guillemet + espace + guillemet + parametres + guillemet ;
	int resultat = system(commande.c_str());
Est ce que cela peut être aussi lié au fait d'utiliser des "slash" ou"backslash" dans les chemins des fichiers ?
Voila, est ce que qqn aurait une idée de la méthode à adopter ?
Merci d'avance