Czy jest jakiś sposób aby w C++ wpisać do oddzielnych stringów, słowa które są w jednej linijce i są oddzielone spacjami? Potem na tych słowach mam wykonywać operacje. Cały dzień nad tym siedzę. Z góry dzięki.

Odpowiedź :

Potrzebujesz funkcji splitującej, która rozdzieli tekst na poszczególne elementy i przechowa je w wektorze typu string

Poniżej przykład funkcji splitującej i iteracja po poszególnych elementach wektora.

#include <fstream>

#include <string>

#include <vector>

#include <iostream>

/// <summary>

/// funkcja splitująca tekst

/// </summary>

/// <param name="txt">tekst wejściowy</param>

/// <param name="strs">wektor, który będzie przechowywać listę słów</param>

/// <param name="ch">znak separujący np. spacja</param>

/// <returns></returns>

size_t split(const std::string& txt, std::vector<std::string>& strs, char ch)

{

   size_t pos = txt.find(ch);

   size_t initialPos = 0;

   strs.clear();

   

   while (pos != std::string::npos) {

       strs.push_back(txt.substr(initialPos, pos - initialPos));

       initialPos = pos + 1;

       pos = txt.find(ch, initialPos);

   }

   

   strs.push_back(txt.substr(initialPos, std::min(pos, txt.size()) - initialPos + 1));

   return strs.size();

}

int main()

{

   //wektor dla listy słów

   std::vector<std::string> list;

   split("to jest mój tekst", list, ' ');  

   //ustalenie liczby elementów w wektorze

   int count = list.size();

   //operacje na poszególnych elementów wektora

   for (int i = 0; i < count; i++)

   {

       std::cout << list[i] << std::endl;

   }

   

}

Viz Inne Pytanie