funkcja dzieląca string na 4 stringi

0

czesc, chodzi mi o prostą funkcje, która po otrzymaniu stringa, podzieli go na 4 różne stringi(tablicę 4 elementową) jeżeli znajdzie znak spacji.

czyli np. mamy string = "wyraz1 wyraz2 wyraz3 wyraz4"
i za pomocą funkcji uzyskujemy tablicę stringów:
tab[1]=wyraz1
tab[2]=wyraz2
tab[3]=wyraz3
tab[4]=wyraz4

pomyslalem wiec, ze ciezko bedzie zwrocic tablicę stringow, wiec bede pracował na gotowej juz tablicy.

ale niestety po uruchomieniu programu od razu wyskakuje błąd
proszę o pomoc

 int main()
{
string tab[4];
string zdanie="hahaha xddd blebleble turumble";
funkcja(zdanie,tab);
}

string funkcja(string ciag, string *tablica)
{
int i=0,j=0;

while(ciag[i]!='\0')
{
if(ciag[i]==' '){ j++;i++; }
tablica[j]+=ciag[i];
i++;
}

}

1
#include <iostream>
#include <string>
using namespace std;

size_t funkcja(const string &str,string *tab,size_t size)
  {
   size_t y=0,p=0;
   for(size_t s=0;s<str.size();s=p+1)
     {
      p=str.find(' ',s);
      if((y+1>=size)||(p==string::npos)) p=str.size();
      tab[y++]=str.substr(s,p-s);
     }
   return y;
  }

int main()
  {
   string tab[4];
   string zdanie="hahaha xddd blebleble turumble";
   size_t N=funkcja(zdanie,tab,4);
   for(size_t i=0;i<N;++i) cout<<tab[i]<<endl;
   return 0;
  }
1

C:

char str[] = "aaa bbb ccc ddd";
char tabStr[4][256];
sscanf(str, "%s%s%s%s", tabStr[0], tabStr[1], tabStr[2], tabStr[3]);

C++:

char str[] = "aaa bbb ccc ddd";
istringstream stream(str);
string s[4];
for(int i=0; i<4; ++i)
    stream >> s[i];

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