Avatar ·

Cómo iterar sobre palabras en una cadena en C++: análisis de métodos populares

¡Hola a todos! Soy nuevo en C++ y no puedo entender cómo dividir correctamente una cadena en palabras individuales y recorrerlas en un bucle. En Python esto se hace en una línea con `split()`, pero en C++ todo es más complicado. Tengo una cadena como: `"Привет, как дела? У меня всё хорошо!"` Necesito imprimir cada palabra por separado, ignorando signos de puntuación y espacios. Probé usar `std::stringstream`, pero no elimina comas ni signos de interrogación — se quedan pegados a las palabras. Por ejemplo, obtengo `"Привет,"` en lugar de `"Привет"`. Intenté escribir mi propia solución con búsqueda manual de espacios usando `std::string::find`, pero el código queda enorme y confuso. Además, mi versión no funciona con tabulaciones ni múltiples espacios. Por favor, indíquenme cómo hacerlo correctamente y de forma elegante. Preferiblemente en C++ moderno (11/14/17). Proporcionen un ejemplo de código que: 1. Divida la cadena en palabras por espacios y signos de puntuación. 2. Ignore espacios adicionales y cadenas vacías. 3. Funcione.