Cómo iterar a través de una string palabra por palabra en C++

Dada una string que consta de muchas palabras separadas por espacios, la tarea es iterar sobre estas palabras de la string en C++.
Ejemplo:

Entrada: str = »              GeeksforGeeks es un portal de informática para Geeks»
Salida: GeeksforGeeks
             es
             un              portal de
             informática              para              Geeks

Entrada: str = «Geeks para Geeks»
Salida: Geeks
             para
             Geeks

Enfoque: la clase istringstream es la más adecuada para este propósito. Cuando una string se divide por espacios en blanco, esta clase se puede usar para obtener y usar fácilmente cada palabra de la string.
Sintaxis:

string str = {"Geeks for Geeks"};
istringstream iss(str);

A continuación se muestra la implementación del enfoque anterior: 

CPP

// C++ program to Iterate through
// a String word by word
 
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
// Driver code
int main()
{
 
    // Get the String
    string str = "GeeksforGeeks is a computer "
                 "science portal for Geeks";
 
    // Initialise the istringstream
    // with the given string
    istringstream iss(str);
 
    // Iterate the istringstream
    // using do-while loop
    do {
        string subs;
 
        // Get the word from the istringstream
        iss >> subs;
 
        // Print the word fetched
        // from the istringstream
        cout << subs << endl;
 
    } while (iss);
 
    return 0;
}
Producción

GeeksforGeeks
is
a
computer
science
portal
for
Geeks

Otro método: Esto también se puede hacer iterativamente

  1. Calcule la longitud de la string dada, digamos n
  2. Iterar en la string dada de i = 0 a i < n
  3. Compruebe si el carácter actual str[i] == ” ” o i == n – 1
    1. Imprima la string formada por palabra y vacíe la string de palabras
  4. De lo contrario, siga agregando caracteres en la string de palabras

A continuación se muestra la implementación de la 

C++

// C++ program to Iterate a string Word by Word
#include <bits/stdc++.h>
using namespace std;
 
// Function to split words from the given string.
void splitWord(string str)
{
    // Find length of given variable
    int n = str.length();
 
    // Create an empty string
    string word = "";
 
    // Iterate over the string character by character using
    // For loop
    for (int i = 0; i < n; i++) {
 
        // Check if the current iteration is equal to ' ' or
        // it's the last character
        if (str[i] == ' ' or i == (n - 1)) {
 
            // Print word
            cout << word + str[i] << endl;
            word = "";
        }
 
        // Add current character in word string
        else {
            word += str[i];
        }
    }
}
 
int main()
{
    // Given string
    string str = "GeeksforGeeks is a computer "
                 "science portal for Geeks";
 
    splitWord(str);
 
    return 0;
}
// This code is contributed by Shivesh Kumar Dwivedi
Producción

GeeksforGeeks 
is 
a 
computer 
science 
portal 
for 
Geeks

Complejidad de tiempo: O(n), donde n es el tamaño de la string dada
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por Code_r y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *