我正在逐个单词地读取文件,我想先通过将所有字符转换为小写字母并对单词进行预处理,并删除除标点符号:连字符(-)和撇号(')之外的所有非字母字符,然后进行相应显示。我已经完成了将单词转换为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;
}

最佳答案

您可以使用std :: remove_if

word.erase(std::remove_if(word.begin(), word.end(), [](char c)
{
    return (c < 'a' || c > 'z') && c != '\'' && c != '-';
}),  word.end());

关于c++ - 如何以特定格式读取文本文件C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50244952/

10-09 21:36