zczytywanie stringów do spacji i zapisywanie do tablicy

zczytywanie stringów do spacji i zapisywanie do tablicy
R6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
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.

Kopiuj
#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;
}
 
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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

  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
 
#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".

R6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

czyli lepiej używać scanf?

adf88
  • Rejestracja: dni
  • Ostatnio: dni
0

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

R6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
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.

byku_guzio
  • Rejestracja: dni
  • Ostatnio: dni
0

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

R6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

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

R6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

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

Kopiuj
 
#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;
}
RE
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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.

R6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
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.

Kopiuj
#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;
}
 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.