Avatar ·

Como iterar sobre palavras em uma string em C++: análise de métodos populares

Olá a todos! Sou iniciante em C++ e não consigo entender como dividir corretamente uma string em palavras individuais e percorrê-las em um loop. Em Python, isso é feito com uma linha usando `split()`, mas em C++ é tudo meio complicado. Tenho uma string do tipo: `"Olá, como vai? Estou bem!"` Preciso exibir cada palavra separadamente, ignorando pontuação e espaços. Tentei usar `std::stringstream`, mas ele não remove vírgulas e pontos de interrogação — eles ficam grudados nas palavras. Por exemplo, aparece `"Olá,"` em vez de `"Olá"`. Tentei criar minha própria solução com busca manual de espaços usando `std::string::find`, mas o código fica enorme e confuso. Além disso, minha versão não funciona com tabulações e múltiplos espaços. Por favor, me digam como fazer isso de forma correta e elegante? De preferência em C++ moderno (11/14/17). Dê um exemplo de código que: 1. Divida a string em palavras por espaços e pontuação. 2. Ignore espaços extras e strings vazias. 3. Funcione.