Я разрабатываю программу командной строки с использованием unordered_map и char * в C++.C++ неупорядоченная карта для хранения параметров командной строки
Однако, это не работает.
Вот мой код.
#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;
}
}
Когда я обеспечиваю мои списки arguement:
myprogram.exe -file "c:\myfile.txt" -option1 .....
Он не может открыть входной файл.
Может ли кто-нибудь помочь мне с этим?
Большое спасибо
Я собираюсь просто рассказать вам, что «символ», который вы передаете, как ваш * lookup * ключ * не * тот же фактический адрес, который находится в качестве ключа на вашей карте, используемой в качестве ключа * вставки *. Один из них - 'argv []', другой - литерал только для чтения. В * большинстве случаев, указатели ** не **, что вы хотите для ключей. (есть ситуации, когда это полезно, но это не один из них, очевидно). Джон кратко рассказал об этом здесь, и он может прийти как ответ; используйте 'std :: string' как тип ключа для вашей карты. – WhozCraig