0

我有这个带有以下代码的 MFC 应用程序,用于检查使用应用程序中的编辑控件输入的数字的有效性。它被验证为一串字符。

bool invalid = FALSE;
int string_length = InputEdit.GetWindowText(text, 10);
if (text[0] == '-1')
    for(i=1; i<string_length; i++)
        if((text[i] < '0' || text[i] > '9' ) && text[i] != '.'){
            MessageBeep(MB_ICONEXCLAMATION);
            Reactive_Const_Status_Text.SetWindowText("Invalid AA Value");
            invalid = TRUE;
        }
else
    for(i=0; i<string_length; i++)
        if((text[i] < '0' || text[i] > '9' ) && text[i] != '.'){
            MessageBeep(MB_ICONEXCLAMATION);
            Reactive_Const_Status_Text.SetWindowText("Invalid AA Value");
            invalid = TRUE;
        }

if(!invalid){   
    double temp_value = atof(text);
    reac.VelAA  = temp_value;
}

所以这个编辑控件允许用户输入负数。但是,有人可以解释一下“if (text[0] == '-1')”这行代码在代码中的作用吗?它是否检查负数,如果是,为什么要使用 '-1' ?其次,我想将此代码转换为 C#,那么如何转换这一行?

提前致谢

4

1 回答 1

1

实际上,这段代码也在检查负数。第一个 for 循环从第二个数字开始检查。

if (text[0] == '-1') 的行应该是 if (text[0] == '-')

我是这样猜的,因为在 C++ 中,单引号只能用于单个字符,而不能用于具有多个字符的字符串。

在 C# 中,同一行 if (text[0] == '-') 将起作用。

谢谢。

于 2012-04-23T08:32:17.550 回答