当我使用函数main(int argc, char * argv[])
当我启动应用程序时,我想发送一些参数,如
(假设应用名称为ffdisk
)
>ffdisk -f 111123123131321312312123 1
你看到第三个参数可能是我初衷的int64参数...
但是在函数main中,argv [2]是字符串指针,那么如何将这个字符串转换成int64变量?
...感谢名单
我总是陷入凌乱的问题......
答案 0 :(得分:2)
有多种方法,使用一些argc / argv解析库,或手动使用sscanf或atol库函数。
答案 1 :(得分:2)
您可以在stdlib.h中使用_atoi64,_strtoi64函数
答案 2 :(得分:2)
#include <stdlib.h>
int main(int argc, char** argv) {
second_parm_as_long_long = atoll(argv[2]);
return 0;
}
答案 3 :(得分:1)
当您的目标是Windows和Linux时,您可能希望保持在两个系统上的功能范围内。这意味着简单的标准C89。
但是普通的标准C89不要求实现提供64位整数类型。所以,无论如何你都被困住了。
假设您有一个足以满足您需求的类型(依赖于实现),您可以逐位创建数字位 ...
value = 0; /* value is of the large enough type */
char *p = argv[2];
while (*p) {
value *= 10;
value += *p - '0';
p++;
}
/* if argv[2] was "111123123131321312312123"
* and the type is large enough,
* value now has 111123123131321312312123 */
答案 4 :(得分:0)
对于Linux,GNU C库有getopt。对于Windows,您可以查看XGetopt
或者您可以查看argtable(但我从未有机会使用它)
同样在C ++中:
Boost.Program_option允许 程序开发人员获取程序 选项,即(名称,值)对 来自用户,通过传统 命令行和命令行等方法 配置文件。
或
gflags包中包含一个 实现命令行的库 标志处理。因此它是一个 替换getopt()。它有 增加灵活性,包括 内置支持C ++类型 字符串,以及定义的能力 源文件中的标志 他们被使用了。
选择一个。