C++无序列图来存储命令行参数
C++ unordered map to store command line parameters
我正在使用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++中最好的工具。
相关文章:
- 从命令行c++发送文本文件名
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 数组长度,为什么从命令行获取时不能使用它?
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 使用 C++ 将命令行参数拆分为参数/向量
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 命令行参数未存储(使用 boost)
- 在 linux 上使用命令行重定向(wiith <)将文件内容存储在字符串中?
- C++无序列图来存储命令行参数
- 从命令行读取文本文件,并将文件内容存储到c字符串中
- 编译存储在外部文本文件中的数组(c++使用命令行g++编译)
- 如何将Qt控制台输出从命令行存储到文本文件中
- 命令行接口-使用Midi库分析事件并存储在矢量C++中