如何将unsigned int作为控制台参数?

时间:2012-10-31 08:55:17

标签: c++


我试图通过控制台参数将unsigned int值传递给我的程序。

我还尝试了什么:
first:检查argc是否为2,否则出错

如果有第二个值,我试图将此值转换为:

strtoul(argv[1], NULL, 0)

所以当我通过“100”时,我得到“1” 我做错了什么?

br



€:向我的函数传递了一个错误的参数,发现了错误,谢谢你们

2 个答案:

答案 0 :(得分:4)

在没有看到实际代码的情况下有点难以辨别,但您可以将其用作基线:

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[]) {
    char *pCh;
    unsigned long unlong = 42;

    // Check enough arguments.

    if (argc != 2) {
        puts ("Not enough arguments");
        return 1;
    }

    // Convert to ulong WITH CHECKING!

    unlong = strtoul (argv[1], &pCh, 10);

    // Ensure argument was okay.

    if ((pCh == argv[1]) || (*pCh != '\0')) {
        puts ("Invalid number");
        return 1;
    }

    // Output converted argument and exit.

    printf ("Argument was %ld\n", unlong);
    return 0;
}

成绩单如下:

pax> ./testprog 314159
Argument was 314159

如果这还不足以帮助我,我建议您发布展示问题的最短完整程序,然后我们可以用极其详细的方式告诉您它有什么问题: - )

答案 1 :(得分:0)

你的方法应该有用。或者,您可以使用stringstream:

std::string str(argv[1]);

unsigned long ul;

std::stringstream(str)>>ul;