Problem z dzieleniem wyrazów w string.

0

Treść zadania wymaga ode mnie, bym napisał funkcje która podzieli wpisany tekst umieszczając każde słowo w osobnej linijce. Mój kod dzieli na osobne linijki ale każdy znak, potrzebuje pomocy. Poniżej kod:

#include <iostream>
#include <string>

using namespace std;

string zdanie;

void funkcja(string x)
{
	int i=0;
	int dlugosc=x.length();
	do
	{
		cout<<x[i];
		if(x[i]=' ')cout<<endl;
		i++;
	}
	while(i<=dlugosc-1);

}

int main()
{
	cout<<"Podaj dowolne zdanie: "<<endl;
	getline
	(cin,zdanie);
	
	cout<<"Zdanie podzielone na wyrazy, wyglada tak: "<<endl;
	funkcja(zdanie);

	return 0;
}
2

Linia najmniejszego oporu: wczytaj stringa do std::stringstream i wyciągaj z niego za pomocą operatora >> kolejne wyrazy (tak jak z cin).

PS: nie używaj zmiennych globalnych.

1

Poguglaj: c++ split string.
Na szczęście (w szkole)/nieszczęście ekosystem C++ nie ma takiego gotowca, jak inne języki, ale ma użyteczne "półśrodki"

Funkcje do tego celu NIE PISZ jako void i drukujacą w środku (jak wszyscy początkujący), tylko zwracającą sensowny typ (tutaj std::vector<string>) i NIE DRUKUJĄCĄ.
Ewentualne drukowanie wyniku w miejscu wywołania

2

Masz if(x[i]=' ') a powinno być if(x[i]==' '). To jest typowy błąd (literówka) z operacją porównania ==. Na przyszłość staraj się czytać ostrzeżenia od kompilatora.

1 użytkowników online, w tym zalogowanych: 0, gości: 1