Я пытаюсь прочитать в файле словаря вектор объектов слов, который затем перебираю и сравниваю слово объекта с тем, что было введено пользователем.
Однако, когда сравнение выполняется в Dictionary :: wordFind () со словом, которое должно совпадать со словом объекта слова, таким как «aa», сравнение не выполняется правильно.
Никаких ошибок не выводится, оператор if в wordFind () по какой-то причине просто не выполняется.
dictionary.txt
aa
acronym for Associate in Arts a college degree granted for successful completion of a two-year course of study in arts or general topics; Alcoholics Anonymous.
n
aaas
the American Association for the Advancement of Science an organization with headquarters in Washington D.C..
n
dictionary.cpp
void Dictionary::loadDictionary() {
ifstream dicFile("dictionary.txt");
string word, def, type, whitespace;
if (dicFile.is_open())
{
while (!dicFile.eof())
{
getline(dicFile, word);
getline(dicFile, def);
getline(dicFile, type);
getline(dicFile, whitespace);
Word word1(word, def, type);
wordObjects.push_back(word1);
}
dicFile.close();
}
}
void Dictionary::wordFind(string wordToFind) {
for (Word test : wordObjects)
{
if (test.getWord() == wordToFind)
{
cout << "Word found!" << endl;
cout << "Word: " << test.getWord() << "\n\n" << "Definition: " << "\n" << test.getDef();
}
}
cout << "Word not found" << endl;
}
word.cpp
Word::Word(string _word, string _def, string _type) {
word = _word;
def = _def;
type = _type;
}
string Word::getWord() {
return word;
}
string Word::getDef() {
return def;
}
string Word::getType() {
return type;
}
main.cpp
int main()
{
Dictionary dic;
dic.loadDictionary();
if (menuChoice == 1)
{
string wordSearch;
cout << "Please enter your word: " << endl;
cin >> wordSearch;
dic.wordFind(wordSearch);
}
Я заметил, используя cout << wordObjects[2].showWord();
(который выведет слово "aaas", как показано в приведенном выше словаре dictionary.txt), что в выводе, похоже, есть пробелы между буквами слова, как показано в ссылке ниже.
(Я пытался просто добавить изображение, но мне не хватает кармы. Поверьте мне, это не будет неприятной ссылкой)
https://i.ibb.co/t4053Tf/12221222222222121212.png
Я не уверен, почему это происходит, и мне интересно, есть ли у кого-нибудь идея, почему мой код будет вызывать такое поведение.
Любой совет с благодарностью!
РЕДАКТИРОВАТЬ: Благодаря комментарию Пола Сандерса о символах Unicode я заново создал файл dictionary.txt, но сохранил его в формате ANSI, и, похоже, он решил мою проблему. Спасибо!