Использование strcpy для копирования элементов массива char в другой массив - PullRequest
0 голосов
/ 26 февраля 2020

Итак, я создаю проверку орфографии, и у меня это в качестве класса TrieNode:

class TrieNode{
public:
    bool isWord;
    char word[100][20];
    TrieNode* letter[alphabetSize];

У меня есть метод вставки внутри класса Tr ie, который:

    void insert(TrieNode* root, char* wordInsert);

Я смог вставить буквы char * word в свой tr ie

Вот что у меня есть для моей функции вставки:

void Trie::insert(TrieNode* root, char* wordInsert) {
    TrieNode* currentNode = root;
    int wordLength = strlen(wordInsert);
    for (int i = 0; i < wordLength; i++) {
        //strcpy(currentNode->word[i], currentNode->letter);
        int index = wordInsert[i]- 'a';
        if(!currentNode->letter[index]){
            currentNode->letter[index] = new TrieNode();
        }
        currentNode = currentNode->letter[index];
    }
    currentNode->isWord = true;

}

Теперь я хочу вставить текущий -> буква [i] в ​​мой другой массив char * в моем классе TrieNode с именем word

Я пытался выполнить

strcpy(currentNode->word, currentNode->letter[i])

, но я получаю сообщение об ошибке:

Нет функция соответствия для вызова 'strcpy'

Как бы я мог получить элементы из массива букв в массив с именем word, который также находится в моем классе TrieNode

1 Ответ

3 голосов
/ 26 февраля 2020

Прежде всего, почему вы используете char * и strcpy, если отметили свой вопрос c++? Лучше использовать std::string для хранения строк и, вероятно, std::vector или std::array для массивов. Кроме того, вам, вероятно, следует рассмотреть возможность использования std::unique_ptr вместо простых указателей, которые вы выделяете с помощью new.

Во-вторых, TrieNode не является строкой сама по себе. Внутри него есть несколько строк, но вы не указали, какую из этих строк вы хотите скопировать.

...