Je développe un programme de ligne de commande en utilisant unordered_map et char * en C++.C++ carte non ordonnée pour stocker les paramètres de ligne de commande
Cependant, cela ne fonctionne pas.
Voici mon code.
#include "stdafx.h"
#include <unordered_map>
int main(int argc, char *argv[])
{
std::unordered_map <char*, char*> hash;
for (int i = 1; i<argc; i++){
if (argv[i][0] == '-'){
hash[argv[i]] = argv[i+1];
}
}
if (hash["-file"]){
printf("Openning the file %s \n", hash["-file"]);
}else{
printf("Error open files \n");
return 0;
}
}
Quand je fournis à mes listes de Arguement:
myprogram.exe -file "c:\myfile.txt" -option1 .....
Il ne peut pas ouvrir le fichier d'entrée.
Quelqu'un peut-il m'aider avec?
Merci beaucoup
Je vais juste vous dire maintenant le 'char *' que vous transmettez comme votre clé * lookup * est * pas * la même adresse réelle résidant en tant que clé dans votre carte utilisée comme clé * insertion *. L'un vient de 'argv []', l'autre un littéral en lecture seule. Dans * la plupart * des cas, les pointeurs ne sont pas ** ** ce que vous voulez pour les clés. (il y a des situations où c'est utile, mais ce n'est pas l'un d'eux, évidemment). John l'a brièvement mentionné ici, et cela pourrait être une réponse. utilisez 'std :: string' comme type de clé pour votre carte. – WhozCraig