5
0で簡単な文字列アクセスをしようとしていますが、何らかの理由でBorland Builder 5 C++で範囲外のエラーが発生します。Borland Builder 5のC++文字列は0でインデックスできません
誰かがこれを回避する方法を見つけましたか? Borland Compilerが使用する特別なタイプの文字列がありますか?
0で簡単な文字列アクセスをしようとしていますが、何らかの理由でBorland Builder 5 C++で範囲外のエラーが発生します。Borland Builder 5のC++文字列は0でインデックスできません
誰かがこれを回避する方法を見つけましたか? Borland Compilerが使用する特別なタイプの文字列がありますか?
はい、これはBorland C++ Builderで使用される特別なString型です。 このタイプの変数は1からインデックスされます。
私はそれが少し混乱するかもしれないことを知っています - 私はまた、それを長い間信じられませんでした。
はい。 C++ BuilderとDelphiは共通の型を共有しているため、これらは1ベースです。 (C++ BuilderのVCLはDelphiのコンパイラによって作成されコンパイルされます)何らかの理由で0ベースの索引付けが必要な場合は、1ベースの索引付けを使用するか、C++互換の文字列に変換します。 –
面白いことは、すべてのAnsiStringメソッドでインデックス0の処理が等しくないということです。たとえば、BCB5では、 'SubString()'は空文字列を返し、1未満のインデックスを指定した場合はエラーを発生しません。しかし、BCB6以降では、インデックス1にサイレントにマッピングされます。 –
@Remy、それは変です。私はあなたがその質問を見て、私ができるよりもうまく答えてくれることを知っていたので、答えの代わりにコメントを投稿しました。私はほとんどBuilderを使用しません。 :-) –