zczytywanie stringów do spacji i zapisywanie do tablicy

0

Witam wszystkich zaczynam dopiero co moją przygodę z c++ i sprawa wygląda tak . Chcę napisać program który będzie czytał ciąg znaków, a jeśli wystąpi spacja zapisze to slowo do następnego elementu tablicy.

#include <iostream>
#include <string>

using namespace std;

int main(){
string tablica[6];
string slowo;
int dlugosc;

cin>>slowo;
cout<<endl;
dlugosc=slowo.size();
int i=1 ;
int nr=1;

while(slowo[i]!=' ')
 {
    i++;
        if(slowo[i]!=' '){
tablica[nr]+=slowo[i];
i++;
        }
        else{
            i++;
            nr++;
        }
}
cout<<tablica[1]<<endl;
return 0;
}
 
0

Bez sensu, bo cin>> przeczyta ci z wejścia tylko znaki do pierwszego białego znaku (tzn np. do spacji). W efekcie robiąc cin>>slowo; nigdy w zmiennej slowo nie będziesz miał spacji.
Poza tym tablice INDEKSUJEMY OD 0

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

int main()
{
    string wyraz_ze_spacja;
    cout << "Podaj jak bardzo leniwy jestes: ";
    getline(cin, wyraz_ze_spacja);

    cout << "Hurra jestem " << wyraz_ze_spacja << " leniwy ..\n";
    cin.sync();
    cin.get();
    return 0;
}

Powyższy kod przedstawia wczytywanie do stringa ze "spacjami".

0

czyli lepiej używać scanf?

0

Czyli czytać ze zrozumieniem to co @Shalom napisał.

0
adf88 napisał(a):

Czyli czytać ze zrozumieniem to co @Shalom napisał.

no wiesz napisać napisał i zrozumiałem. Ale chciałem się po prostu spytać czy nie lepiej używać scanf-u.

0

Nie, nie lepiej. Choćby dlatego, że używanie strumieni zapewnia kontrolę typów.

0

dobra chwile strumenie chodzi o getline? czy o samo get?

0

a więc tak dałem radę już sobie :)

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

int main(){
string tablica[21];
string slowo;
int index=0;
int i=0;
int dlugosc;
    getline(cin,slowo);
cout<<endl;
dlugosc=slowo.size();
while(i<=dlugosc){
        if(slowo[i]!=' '){
        tablica[index]+=slowo[i];
        i++;}
        else{
            index++;
            i++;
        }


}

cout<<tablica[1];
return 0;
}
0
vector<string> words;
	
string line;
getline(cin, line);
istringstream line_stream(line);
	
istream_iterator<string> begin(line_stream), end;
copy(begin, end, back_inserter(words));

A tak to się robi korzystając z STL.

0

a teraz posiadam problem o to z tym ponieważ zmienna linijka dochodzi tylko do 48 a powinna do 200 i wypisujac dane z tablicy dziala tylko pierwsza linijka ;. Celem tego programu jest odczytanie pliku i zapisanie tego do tablicy.

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

int main(){
string tablica[200][5];
string slowo;
int index=0;
int i=0;
int linijka=0;
int dlugosc;
fstream plik;

plik.open("anagram.txt", ios::in);
    while(!plik.eof() ){



    getline(plik,slowo);

dlugosc=slowo.size();
while(i<=dlugosc){
        if(slowo[i]!=' '){
        tablica[linijka][index]+=slowo[i];
        i++;}
        else{
            index++;
            i++;
            
        
}
linijka++;
    }

    cout<<tablica[0][0]<<endl;
return 0;
}
 

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