我正在逐字逐句地阅读文件,我想首先通过将所有字符转换为小写字母来预处理该字词并删除除标点符号之外的任何非字母字符:连字符( - )和撇号(')然后相应地显示。我已经完成了将单词转换为lowercase
但现在我需要删除除字符串( - )和撇号(')之外的非字母字符。我不知道该怎么做。有人可以把这个想出来吗?
void WordStats::ReadTxtFile()
{
std::ifstream ifile(Filename);
if(!ifile)
{
std::cerr << "Error Opening file " << Filename << std::endl;
exit(1);
}
for (std::string word; ifile >> word; )
{
transform (word.begin(), word.end(), word.begin(), ::tolower);
WordMap & Words = (Dictionary.count(word) ? KnownWords :
UnknownWords);
Words[word].push_back(ifile.tellg());
}
std::cout << KnownWords.size() << " known words read." << std::endl;
std::cout << UnknownWords.size() << " unknown words read." << std::endl;
}
答案 0 :(得分:1)
您可以使用std :: remove_if
word.erase(std::remove_if(word.begin(), word.end(), [](char c)
{
return (c < 'a' || c > 'z') && c != '\'' && c != '-';
}), word.end());