Я пытаюсь ввести все слова в карту на C ++, но программа зависает только тогда, когда слово начинается со специального символа.Код работает, когда в конце есть специальный символ.
Я не смог найти нужную документацию для оператора >> в C ++ или не смог правильно погуглить мою проблему.
//Map values and find max value
//The code works for all words except the ones that start with special characters
while(myFile >> cWord){
//put the characters into a string
//DEBUG: cout << "real word: " << cWord << " | ";
cWord = stripWord(cWord);
//delete common words before they're in the system
if(cWord == "a" ||
cWord == "an" ||
cWord == "and" ||
cWord == "in" ||
cWord == "is" ||
cWord == "it" ||
cWord == "the"){
continue;
}
if (wordMap.count(cWord) == 0){
wordMap.insert({cWord, 1});
}
else{
wordMap[cWord]++;
if(wordMap[cWord] > maxWordRep){
maxWordRep = wordMap[cWord];
}
}
//DEBUG: cout << cWord << " | " << wordMap[cWord] << endl;
}
Я ожидаю, что отладка напечатает все слова, а затем будет следовать остальной части кода, но код перестает работать и останавливается в точной строке
while(myFile >> cWord)
Мой ввод - текст песнифайлы.Вот слова, которые программа заморозила:
Подсчет звезд: Завершено.
Я могу хлопнуть в ладоши: Застрял на , потому что
Одинбольше ночи: Застрял в (да
Выполнить на тесте (файл для проверки комбинированных слов): Завершено
Безопасный танец: Застрял в '*
Встряхни это: Застрял в "о
Есть множество других, которые следуют тому же шаблону. Всегда 1 или более специальных символов впереди. Вы можетепопробуйте сами, и cin >> string застрянет, когда вы введете строку со специальным символом впереди.
Final Edit: ошибка была в функции stripWord, поэтому этот вопрос просто плохой.