Получаю ошибку при чтении нестандартных символов
Написал небольшую программу для подсчета разных слов в текстах, например, в песнях. Иногда все работает правильно, а иногда, как я понял, происходит ошибка чтения нестандартных символов (например ’ вместо ').
using namespace std;
string removePunctuations(string& s) {
string result = "";
for (char c : s) {
if (!ispunct(c) || c == '\'' || c == '-') {
result += tolower(c);
}
}
s = result;
return s;
}
int main()
{
ifstream isong("songtext.txt");
ofstream osong("songstats.txt");
map<string, int> used_words;
string word;
while (isong >> word)
used_words[removePunctuations(word)]++;
isong.close();
vector<pair<string, int>> rarity;
osong << "List of words:" << endl;
for (auto elem : used_words) {
osong << '"' << elem.first << "\": " << elem.second << endl;
rarity.push_back(elem);
}
sort(rarity.begin(), rarity.end(),
[](const pair<string, int>& a,
const pair<string, int>& b) {
return a.second < b.second;
});
osong << endl << "List of rarity:" << endl;
for (auto elem : rarity)
osong << '"' << elem.first << "\": " << elem.second << endl;
osong.close();
return 0;
}