Как прочитать текстовый файл в определенном формате C ++ - PullRequest
0 голосов
/ 09 мая 2018

Я читаю файл слово за словом и хочу сначала обработать слово, преобразовав все символы в нижний регистр и удалив все не алфавитные символы, кроме знаков препинания: дефис (-) и апостроф ('), а затем отображать соответственно. Я завершил преобразование слов в 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;
}

1 Ответ

0 голосов
/ 09 мая 2018

Вы можете использовать std :: remove_if

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