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 GeeksEntrada: 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; }
GeeksforGeeks is a computer science portal for Geeks
Otro método: Esto también se puede hacer iterativamente
- Calcule la longitud de la string dada, digamos n
- Iterar en la string dada de i = 0 a i < n
- Compruebe si el carácter actual str[i] == ” ” o i == n – 1
- Imprima la string formada por palabra y vacíe la string de palabras
- 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
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)