tablica stringów

0

Jak uwtorzyc tablice stringow w ten sposob, ze program wczyta napis skladajacy sie z wielu slow i nastepnie te slowa zapisze w tablicy. Przyklad: Jestem tu. element1:jestem element2: tu Jak to zrobic?

#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main(int argc, char *argv[])
{
   
string napis;

int r=1; 

cout<<"Podaj napis:"<<endl; 
getline(cin, napis);            
int i=0;
for (i=0; i<20; i++)
{ 
if (napis[i]==' ') 
r++; 

if(napis[i]=='\0') 
break; 
}
cout<<r<<endl;
vector <string> tab[r];
    
  for(int i =0;i<tab.size();i++)
  {
?????????????// co tu napisać? ??????????????????
  cout<<tab[i]<<endl;
  }



    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;

int main()
{
    string napis,slowo;
    cout<<"Podaj napis:"<<endl;
    getline(cin,napis);
    istringstream wejscie(napis);
    vector<string> slowa;

    while(wejscie>>slowo)
        slowa.push_back(slowo);

    return 0;
}

Ogólnie to działa tak:

Wczytuje napis
Potem wrzuca go do strumienia
Dopóki może pobrać string se strumienia pobiera go i wrzuca do vectora

Nie umiesz korzystać z vectorów
Takie coś:

vector <string> tab[r];

Tworzy tablicę vectorów
A jeżeli chcesz tablicę stringów to tak robisz:

vector <string> tab(r);

Można zrobić też tak jak ja zrobiłem, czyli:

vector <string> tab;

I potem jak się chce dodać na koniec tablicy coś to się daje

tab.push_back(string);
0

Program po wczytaniu napisu znika,dlaczego? a ja bym chciała wyświetlić elementy tablicy tak, żeby było:
napis: Jestem tu.
wyświetli komputer:
el.1=jestem
el.2=tu
tak by utworzyc tablice char napis[r] skladającą się z r elementów, dlatego na początku zliczam słowa...żeby znać r- rozmiar tablicy...
Jak to można zrobić??

0
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;

int main()
{
    string napis,slowo;
    cout<<"Podaj napis:"<<endl;
    getline(cin,napis);
    istringstream wejscie(napis);
    vector<string> slowa;

    while(wejscie>>slowo)
        slowa.push_back(slowo);

    for(int i=0;i<slowa.size();++i)
        cout << "el." << i+1 << " " << slowa[i] << endl;
    cin>>napis;//zeby nie wylaczalo sie
    return 0;
}

W poprzednik kodzie wszystkie wyrazy były w tablicy a raczej vectorze... A znikało bo się program wyłączał.

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