2012-11-30 17 views
5

0で簡単な文字列アクセスをしようとしていますが、何らかの理由でBorland Builder 5 C++で範囲外のエラーが発生します。Borland Builder 5のC++文字列は0でインデックスできません

誰かがこれを回避する方法を見つけましたか? Borland Compilerが使用する特別なタイプの文字列がありますか?

+0

はい。 C++ BuilderとDelphiは共通の型を共有しているため、これらは1ベースです。 (C++ BuilderのVCLはDelphiのコンパイラによって作成されコンパイルされます)何らかの理由で0ベースの索引付けが必要な場合は、1ベースの索引付けを使用するか、C++互換の文字列に変換します。 –

+0

面白いことは、すべてのAnsiStringメソッドでインデックス0の処理が等しくないということです。たとえば、BCB5では、 'SubString()'は空文字列を返し、1未満のインデックスを指定した場合はエラーを発生しません。しかし、BCB6以降では、インデックス1にサイレントにマッピングされます。 –

+0

@Remy、それは変です。私はあなたがその質問を見て、私ができるよりもうまく答えてくれることを知っていたので、答えの代わりにコメントを投稿しました。私はほとんどBuilderを使用しません。 :-) –

答えて

4

はい、これはBorland C++ Builderで使用される特別なString型です。 このタイプの変数は1からインデックスされます。

私はそれが少し混乱するかもしれないことを知っています - 私はまた、それを長い間信じられませんでした。

関連する問題