C++ 要解析为整数值的命令行参数

C++ 要解析为整数值的命令行参数,c++,string,char,command,integer,C++,String,Char,Command,Integer,我有以下代码: TCHAR *cmd_line = GetCommandLine(); TCHAR *token1; token1 = strchr(cmd_line, L'+'); MessageBox(NULL,token1, _T("test"), NULL); 我进去的时候 WesOPC.exe +10 -regserver 在命令提示中,消息框显示为 "+10 -regserver". 现在,, 我需要在“+”号(10)之后取2个字符,并将其存储在整数变量中(将字符转换为整数)

我有以下代码:

TCHAR *cmd_line = GetCommandLine();
TCHAR *token1;
token1 = strchr(cmd_line, L'+');
MessageBox(NULL,token1, _T("test"), NULL);
我进去的时候

WesOPC.exe +10 -regserver 
在命令提示中,消息框显示为

"+10 -regserver".
现在,, 我需要在“+”号(10)之后取2个字符,并将其存储在整数变量中(将字符转换为整数)

那么,我如何实现这些目标:

  • 从TChar到字符串或字符数组,在“+”之后存储2个字符,以适当的为准
  • 将字符数组或字符串转换为整数
  • /////////////////更新代码////////////////////////////////

    我在上面的代码中添加了以下几行代码来将char转换为int

    int i, value=0;
    for ( i = 0; token1 [ i ] != '\0'; ++i )
    {
      int digit = token1 [ i ] - '0';// get value of current digit character 
      value = 10 * value + digit;
    }
    
    但它显示的是“调试断言错误”

    token1[1]不是正确的语句。我这样说是因为当我尝试执行下面的行时,它也显示了调试错误

    MessageBox(NULL, LPCSTR(token1[1]), _T("test"), NULL);
    
    解决之道在于


    您可以为此使用
    strtol
    。例如

    const char *str = "+10 frogs";
    const char *endptr;
    
    long n = strtol(str + 1, &endptr, 0);
    // now you should have n == 10 && (endptr == " frogs").
    
    它会一直解析数字,直到找到某个不是数字的字符 数字的一部分。
    *endptr
    将指向该字符。您可以使用该字符
    要继续解析字符串或检测错误(请参阅
    strtol
    文档)。

    如果您确定字符串总是两个字符,可以使用

    int val = 10 * (token1[1] - '0') + (token1[2] - '0');
    

    如果不总是两位数,请使用
    \u ttoi(常量字符*)
    要在从
    token1
    中提取正确的字符串后获取值,调用
    MessageBox
    @user3048644时不应涉及强制转换-请告诉您,如果您使用Unicode字符集构建程序,代码将无法编译。我已删除MessageBox中的强制转换。我使用了多个字符集-character byte setIt在构建程序时未显示任何错误。但在运行程序时,它弹出一个对话框,显示“调试断言失败”