c++ - 比较 Char 数组
问题描述
所以在我的TrieNode
课堂上,我有一个char* word[]
. 我有一个方法,其中一个参数是char* missSpelledWord
. 我正在检查这个词是否偏离了一个字母。我有一个 for 循环,然后我有这个 if 语句:
if(missSpelledWord[i] != node->word[i]){
//code
}
我不断收到错误消息说单词数组在我的comparison between pointer and integer ('int' and 'char *')
班级中,我只能通过执行来访问它。如何比较此数据成员并将其与普通数组进行比较?char*
TrieNode
node->word[i]
char*
这是我的TrieNode
课
class TrieNode{
public:
bool isWord;
char word[100][20];
TrieNode* letter[alphabetSize];
};
解决方案
正如您所提到的,您有 char 指针数组,char* word[]
并且您有 char 指针char* missSpelledWord
。这意味着您的语句missSpelledWord[i] != node->word[i]
意味着“将missSpelledWord 中的第i 个字符与node->word 中的第i 个字符数组进行比较”。
事实上,你想要这样的东西:
missSpelledWord[i] != node->word[n][i]
这里“n”是第 n 个单词,“i”是字符位置。
编译器假定数组指针是一个 int,所以它抱怨 char 和 int 之间的比较。数组只是指针,“i”是应用于此指针的偏移量。
word[n]
相当于*(word+(sizeof(char)*n))
。