【问题标题】:How to convert a string pointer to a 64bit ( _int64) variable?如何将字符串指针转换为 64 位(_int64)变量?
【发布时间】:2010-12-24 18:38:42
【问题描述】:

当我写了一个带有 main(int argc, char * argv[]) 功能的应用程序时

当我启动应用程序时,我想发送一些参数,例如 (假设应用名称为ffdisk

>ffdisk -f 111123123131321312312123 1

您看到第三个参数可能是我的初衷中的 int64 参数...
但是在main函数中,argv[2]是字符串指针,那么如何将这个字符串转换为int64变量呢?

谢谢...
我总是陷入混乱的问题......

【问题讨论】:

    标签: c parsing command-line command-line-arguments


    【解决方案1】:

    可以在stdlib.h中使用_atoi64、_strtoi64函数

    【讨论】:

    • 我接受了你的建议 _atoi64...thanx
    【解决方案2】:

    有多种方法,使用一些argc/argv解析库,或者手动使用sscanf或atol库函数。

    【讨论】:

      【解决方案3】:
      #include <stdlib.h>
      
      int main(int argc, char** argv) {
           second_parm_as_long_long = atoll(argv[2]);
           return 0;
      }
      

      【讨论】:

        【解决方案4】:

        当您面向 Windows 和 Linux 时,您可能希望在这两个系统上的功能范围内保持良好状态。这意味着普通的标准 C89。

        但普通标准 C89 不需要实现来提供 64 位整数类型。所以,你还是被卡住了。

        假设您有一个足够大的类型(取决于实现)以满足您的需要,您可以逐位创建数字 bit ...

        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 */
        

        【讨论】:

          【解决方案5】:

          对于 Linux,GNU C 库有 getopt。对于 Windows,您可以查看 XGetopt

          或者你可以看看argtable(但我从来没有机会使用它)

          在 C++ 中也是如此:

          Boost.Program_options 允许 程序开发者获取程序 选项,即(名称,值)对 从用户,通过传统 命令行等方法 配置文件。

          gflags 包包含一个 实现命令行的库 标志处理。因此它是一个 替换 getopt()。它有 增加灵活性,包括 对 C++ 类型的内置支持,例如 字符串,以及定义的能力 源文件中的标志,其中 他们被使用了。

          随便挑一个。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-03-06
            • 1970-01-01
            • 2011-12-12
            • 2019-05-09
            • 2014-12-17
            • 1970-01-01
            • 2023-04-10
            相关资源
            最近更新 更多