【发布时间】:2012-11-18 04:38:46
【问题描述】:
我正在尝试在 0 处进行简单的字符串访问,但由于某种原因,我在 Borland Builder 5 C++ 中遇到了越界错误。
有没有人找到解决这个问题的方法? Borland 编译器是否使用了特殊类型的字符串?
【问题讨论】:
-
是的。它们是基于 1 的,因为 C++Builder 和 Delphi 共享通用类型。 (C++Builder 中的 VCL 是由 Delphi 的编译器编写和编译的。)所以使用基于 1 的索引,或者如果出于某种原因必须使用基于 0 的索引,则将它们转换为与 C++ 兼容的字符串。
-
有趣的是索引 0 的处理在所有 AnsiString 方法中并不相同。例如,在 BCB5 中,
SubString()将返回一个空字符串,如果您为其提供小于 1 的索引,则不会引发错误。但在 BCB6 及更高版本中,小于 1 的索引会被静默映射到索引 1。 -
@Remy,这很奇怪。我发布了评论而不是答案,因为我知道您会看到这个问题并且可以比我更好地回答它;我很少使用 Builder。 :-)
标签: c++ string c++builder c++builder-5