C++;Delphi`in`set运算符的代码

C++;Delphi`in`set运算符的代码,delphi,c++builder,Delphi,C++builder,我无法完全理解帮助文件中的集合成员身份。请解释C++中 >如何处理C++代码:< /p> 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_0

我无法完全理解帮助文件中的集合成员身份。请解释C++中<代码> >如何处理C++代码:< /p>
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';
如果s1[1]在['0'..'9']中,则
开始
ii:=stroint(s1)+1;
s1:=IntToStr(ii);

如果长度(s1)Delphi集合是在C++Builder中使用
Set
模板类实现的,该模板类有一个
Contains()
方法来支持
in
操作,例如:

Set<char, '0', '9'> Digits;
for (char c = '0'; c <= '9'; ++c)
    Digits << c;
设置数字;
对于(char c='0';c Text=“Yeni_Deney_01”;

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

if(s1[1]>=“0”和&s1[1]有什么问题Delphi字符串在桌面编译器中默认基于1,在移动编译器中默认基于0。有一个编译器指令可以更改该行为。C++Builder尚未更新以支持移动开发,但也就是说,因此其VCL字符串仍然基于1,但其C/C++字符串基于0。
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";