次の方法で文字列の配列を使用するコードを見てきました。
string *pointer = new string[runtimeAmmount];
次のようにアクセスされる文字列内の個々の文字も確認しました。
string aString = "this";
char bString[] = "that";
bString[3] = aString[3];
上記の結果は、「thas」に等しい bString になります。これは、文字列が実際には最初の文字の位置へのポインターであることを示唆しています。ただし、文字列には「string.c_str()」としてアクセスされるメンバー関数がまだあります。これは、オブジェクトとしてそれ自体がポインターの規則に従わないことを意味します。これはどのように機能しますか?
注:私の最初の質問は異なるはずでしたが、入力して理解しました。確認のためだけに、誰かが私の元の質問にまだ答えていただければ幸いです。私の最初の質問は次のとおりです。各文字列の長さがその寿命を通じて変化する可能性がある場合、文字列の配列をどのように新しくすることができますか? 弦同士がぶつかりませんか?
私が思いついた答えは次のとおりです。文字列には何らかの方法で C スタイルの配列へのポインターが含まれているため、オブジェクトは一定量のスペースを占有します。
また
文字列は、STL テンプレートの一種であり、まだ実際に調べていません。