我正在使用C++中的unordered_map和char*开发一个命令行程序。
但是,它不起作用。
这是我的代码。
#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;
}
}
当我提供参数列表时:
myprogram.exe -file "c:myfile.txt" -option1 .....
它无法打开输入文件。
有人可以帮我吗?
谢谢
正如@WhozCraig评论中所说,您需要使用std::string
而不是char*
作为地图中的键类型。 您可以继续使用 char* 作为值类型,因为argv
具有整个程序的生存期。
但是,如果您可以使用Boost,他们的程序选项库比任何手写的东西都要好。 不幸的是,由于您似乎正在使用Windows,因此您的平台不提供任何内置的东西,例如getopt_long()
,但无论如何,Boost PO是C++中最好的工具。