【问题标题】:Borland Builder 5 c++ Strings can't index at 0Borland Builder 5 c++ 字符串不能在 0 处索引
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多