少しのコンテキスト:私は非常に単純なハッシング関数/ハッシュテーブルをdescribed hereとして作ろうとしています。私は基本的に最初のステップにあります。盲目的には、それが始まる手紙に基づいて配列にキーを追加します(スペースがまだ占有されていないかチェックしません)。私はこれまでのところ、これを行うために使用しているコード:文字列配列(chars)のC++要素はソース文字列に依存します
int main(int argc, char **argv) {
char *arrayKeys[300];
std::string aName("Charles");
char *aNameCpy = new char[aName.size() + 1];
std::copy(aName.begin(), aName.end(), aNameCpy);
aNameCpy[aName.size()] = '\0';
int kPos = storeKey(arrayKeys, aNameCpy);
std::cout << "The new position in arrayKeys for 'Charles' is: " <<
kPos << "\ncontaining the text: " << arrayKeys[kPos] << std::endl;
delete[] aNameCpy;
return 0;
}
int storeKey(char **keys, char *key) {
int charLett = -1;
charLett = (int)key[0];
if(charLett != -1)
charLett = charLett - 65;
keys[charLett * 10] = key;
return charLett*10;
}
私の質問は、私はそれが完全に離れて配列のではなく、オリジナルの際に依存している配列(arrayKeys)に文字列を追加する方法、です文字列?配列キーを出力する前に文字列(aNamCpy)のコピーを削除すると、配列キーが文字化けして記号化されます。私はarrayKeys配列に追加する非const文字列が必要です(変更できるように)ため、文字列を関数に送る前にコピーしています。見た文字列のメソッドはconstを返すようです。
は(私が試みたこれの別のバージョンが found hereすることができますが、私はむしろ、そのようなarrayKeys初期化しないだろう - 明確な二次元(列)の長さを持つ)C++はまだ私には非常に新しいですので、私はできません文字列をarrayKeysにコピーして非const部分をどうやってやりとりするかを理解する。どんな助けも非常に高く評価されるでしょう。
この場合、char *を使用せず、std :: string(および配列のstd :: vector)を使用してください。 – Mark
std :: vectorを使用していませんが、ありがとう。 – Chase