Avatar ·

Cómo iterar sobre palabras en una cadena en C++: dividir la cadena en tokens

¡Hola a todos! Soy nuevo en C++ (antes escribía en Python) y me encontré con una tarea que parece elemental pero me causa bloqueo. Necesito dividir una cadena en palabras individuales y recorrerlas en un bucle. En Python esto se hace en una línea: `for word in sentence.split():`. Pero en C++ resultó ser más complicado. Aquí hay un ejemplo de mi tarea. Tengo una cadena con una oración: ```cpp std::string text = "Hello, world! This is a test."; ``` Necesito obtener cada palabra por separado: "Hello,", "world!", "This", "is", "a", "test." (o sin signos de puntuación — eso ya son detalles). Intenté usar `std::stringstream`: ```cpp std::stringstream ss(text); std::string word; while (ss >> word) { std::cout << word << std::endl; } ``` Esto funciona, pero solo si las palabras están separadas por espacios. ¿Qué hacer si los delimitadores son otros — comas, puntos, tabulaciones? ¿O si la cadena proviene de un archivo CSV? Además, ¿cómo manejar correctamente cadenas vacías o cadenas con varios espacios seguidos? He oído sobre