Delphi`in` set operator的C ++代码

时间:2013-12-04 11:05:03

标签: delphi c++builder

我无法完全理解帮助文件中的设置成员资格。请解释如何在C ++中为以下代码处理in

if s1[1] in['0'..'9'] then
begin
  ii := StrToInt(s1)+1;
  s1 := IntToStr(ii);
  if Length(s1)<2 then s1 := '0'+s1;
  Edit_deneyismi.text := copy(s,1,i)+s1;
end
else Edit_deneyismi.text := 'Yeni_Deney_01';

1 个答案:

答案 0 :(得分:3)

Delphi集在C ++ Builder中使用Set<>模板类实现,该类具有Contains()方法来支持in操作,例如:

Set<char, '0', '9'> Digits;
for (char c = '0'; c <= '9'; ++c)
    Digits << c;

if (Digits.Contains(s1[1]))
{
    ii = StrToInt(s1)+1;
    s1 = IntToStr(ii);
    if (s1.Length() < 2) s1 = "0" + s1;
    Edit_deneyismi->Text = s.SubString(1, i) + s1;
}
else
    Edit_deneyismi->Text = "Yeni_Deney_01";

否则,请使用C isdigit()函数或RTL Character::IsDigit()函数。或者像Michael建议的那样手动比较char值。