我有以下代码:
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个字符并将其存储在整数变量中(将char转换为整数。
那么,我怎样才能实现这些目标:
/////////////////更新代码//////////////////////////// ////
我在上面的代码中添加了以下行来将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;
}
但它显示“Debug Assertion error”。
令牌1 [1]不是正确的陈述。我这样说是因为当我尝试跟随行时,它也显示出调试错误。
MessageBox(NULL, LPCSTR(token1[1]), _T("test"), NULL);
解决方案在
Unhandled exception for character parsed from command line in Win32 API
答案 0 :(得分:1)
您可以使用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
文档)。
答案 1 :(得分:1)
如果你确定它总是两个字符,你可以使用
int val = 10 * (token1[1] - '0') + (token1[2] - '0');
如果它不总是两位数,请使用_ttoi(const char*)
从token1
中提取正确的字符串后获取值。