Это еще один вопрос, на который я не могу найти ответ, потому что каждый пример, который я могу найти, использует векторы, и мой учитель не позволит нам использовать векторы для этого класса.stringstream с несколькими разделителями
мне нужно прочитать в обычной текстовой версии книги одного слова в то время, используя (любое число) пустых пространств
' '
и (любое число), не буквы символов в качестве разделителей; поэтому любые пробелы или знаки препинания в любой сумме должны отделять слова. Вот как я это сделал, когда это было необходимо только использовать пробелы в качестве разделителя:
while(getline(inFile, line)) {
istringstream iss(line);
while (iss >> word) {
table1.addItem(word);
}
}
EDIT: пример текста, читать, и как мне нужно, чтобы отделить его.
"Если бы они знали ;; вы хотели его, entertainment.would есть"
Вот как первая линия должны быть разделены:
Если
них
имеет
известный
вы
пожелал
это
развлечения
бы
имеют
текст будет содержать в самом крайнем случае все стандартные знаки препинания, но и такие вещи, как эллипсы ...
двойных черточек --
и т.д.
Как всегда, заранее спасибо.
EDIT:
Таким образом, используя второй stringstream будет выглядеть примерно так?
while(getline(inFile, line)) {
istringstream iss(line);
while (iss >> word) {
istringstream iss2(word);
while(iss2 >> letter) {
if(!isalpha(letter))
// do something?
}
// do something else?
table1.addItem(word);
}
}
Используйте поток, чтобы извлечь одно слово, игнорируя пробел (по умолчанию). Затем добавьте новый stringstream и выберете 1 символ за раз, используя 'std :: isalnum', чтобы проверить, должен ли храниться символ. Или используйте 'remove_if' в строке. –
@Neil Kirk Оригинальный пост Отредактировано. Как я могу отбросить/повторно сохранить каждого персонажа, как только я определил, если это письмо или нет? – user3776749
Не добавляйте его в выходную строку, если это не alnum. Письмо должно быть char –