Borland Builder 5的C++字符串无法索引到0。

5

我试图在位置0处进行简单的字符串访问,但不知何故,在Borland Builder 5 C ++中出现了越界错误。

有人找到了解决方法吗? Borland编译器使用特殊类型的字符串吗?


是的。它们是基于1的,因为C++Builder和Delphi共享公共类型。(C++Builder中的VCL是由Delphi编译器编写和编译的。)因此,请使用基于1的索引,或者如果您必须具有基于0的索引,则将它们转换为与C++兼容的字符串。 - Ken White
有趣的是,在所有 AnsiString 方法中,处理索引 0 的方式并不相同。例如,在 BCB5 中,如果您给 SubString() 函数一个小于 1 的索引,它将返回一个空字符串而不会引发错误。但在 BCB6 及更高版本中,小于 1 的索引会被静默地映射到索引 1。 - Remy Lebeau
@Remy,这很奇怪。我发表了一条评论而不是答案,因为我知道你会看到这个问题并且回答得比我好;我很少使用Builder。 :-) - Ken White
1个回答

5

是的,它是Borland C++ Builder使用的一种特殊字符串类型。该类型的变量从1开始索引。

我知道这可能有点令人困惑 - 我也很长时间不能相信。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接