2012-11-30 3 views
5

Ich versuche, eine einfache Zeichenfolge Zugriff auf 0 zu tun, und aus irgendeinem Grund bekomme ich einen Fehler außerhalb der Grenzen in Borland Builder 5 C++.Borland Builder 5 C++ Zeichenfolgen können nicht um 0 indexieren

Hat jemand einen Weg gefunden? Gibt es einen speziellen String, den der Borland Compiler verwendet?

+0

Ja. Sie basieren auf 1, da C++ Builder und Delphi gemeinsame Typen verwenden. (Die VCL in C++ Builder ist in den Compiler von Delphi geschrieben und kompiliert.) Verwenden Sie also die 1-basierte Indizierung oder konvertieren Sie sie in eine C++ - kompatible Zeichenfolge, wenn Sie aus irgendeinem Grund eine 0-basierte Indizierung benötigen. –

+0

Was ist lustig ist, dass die Behandlung von Index 0 ist nicht in allen AnsiString-Methoden gleich. In BCB5 gibt 'SubString()' beispielsweise eine leere Zeichenfolge zurück und löst keinen Fehler aus, wenn Sie ihm einen Index kleiner als 1 geben. In BCB6 und höher werden jedoch Indizes kleiner als 1 automatisch dem Index 1 zugeordnet. –

+0

@Remy, das ist seltsam. Ich habe einen Kommentar anstelle einer Antwort gepostet, weil ich wusste, dass du die Frage sehen würdest und sie besser beantworten könntest, als ich es konnte; Ich benutze selten Builder. :-) –

Antwort

4

Ja, es handelt sich um einen speziellen String-Typ, der von Borland C++ Builder verwendet wird. Variablen dieses Typs sind indexiert von 1.

Ich weiß, dass es ein bisschen verwirrend sein kann - ich konnte es auch für eine lange Zeit nicht glauben.

Verwandte Themen