Эй.Я пытаюсь прочитать строки в массив из файла, который содержит список слов.Это так, чтобы я мог проверить, являются ли строки реальным словом, посмотрев, существуют ли они внутри моего массива.У меня все работает, кроме сравнения.Мой бинарный поиск даже проходит мимо рассматриваемого слова.Когда он сравнивает два одинаковых слова, он все равно возвращает ложь.Я думаю, что проблема, вероятно, заключается в том, как я добавляю слова, потому что функция string.compare () работает нормально.Вот этот код.Я хотел бы помочь.Спасибо.
ifstream dictFile;
dictFile.open("dictionary.txt");
if (!dictFile) // testing if file open
{
cout << "Error opening dictionary file" << endl;
}
int index = 0; // dictionary must progress start at line 1
while(!dictFile.eof())
{
getline(dictFile,dictionary[index]);
index++;
}
dictFile.close();
Что-то не так в том, как я это делаю?
РЕДАКТИРОВАТЬ Вот и код сравнения
bool database::is_word(string word)
{
int ii;
int comp;
int min = 0;
int max = dictSize;
// this will go into the dictionary and look for the word
// it uses a binary search pattern
while (min<=max)
{
ii = (min+max)/2;
comp = word.compare(dictionary[ii]);
cout <<dictionary[ii];
if (comp==0)
{
cout << word<< " is a word!" << endl;
return 1;
}
else if (comp < 0)
{
max = ii-1;
}
else
{
min = ii+1;
}
}
cout << word << " is NOT a word!" << endl;
return 0;
}