Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

String do tablicy

Ostatnio zmodyfikowano 2011-04-15 22:26
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
String do tablicy
» 2011-04-15 16:50:20
Witam mam pytanie czy da się zrobić coś takiego np.

string a = "Basia,Tadek,Marian";
string tabl[10];


I teraz żeby słowo Basia trafiło do np pierwszego elementu tablicy tabl[0] ??

Z góry dzięki

P.S C++
P-30798
Mrowqa
» 2011-04-15 17:00:48
Podpowiedz:
Zrób poszukiwania znaku ',' w stringu z imionami ( funkcja składowa -> find ). Możesz zapisać Sobie położenie przecinka w zmniennej typu całkowitego ( polecam string::size_type - zwykła zmienna całkowita UNSIGNED !! ).
Teraz można przekopiować zawartość od początku do przecinka ( a do pomocniczego stringu - zawartość bez pierwszego imiona ). Teraz powtarzasz te operacje w kółko ;)
Wystarczy pomyśleć :D Radzę poczytać co nieco o stringach :D

Pozdrawiam,
Mrowqa
P-30799
pekfos
» 2011-04-15 17:27:13
lub find_(first/last)_(not_)of. size_t to to samo a krócej sie zapisuje
:P

jakby ktoś nie zrozumiał tego zapisu to chodzi o metody find_first_of, find_last_of, find_first_not_of i find_last_not_of.
P-30800
diego997
Temat założony przez niniejszego użytkownika
» 2011-04-15 17:46:47
Wykąbinowałem takie coś działą dzięki :)

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

using namespace std;

int main()
{
string a= "Marian,Tadek,Pawian";
string tabl[10];
string check;

for(int i = 0 ; i < 10 ; i++)
{

if(a == ',')
{



}
check = check + a;


}



  
  
   system("PAUSE");
   return EXIT_SUCCESS;
}
P-30802
szyx_yankez
» 2011-04-15 18:13:59
Można też prosty parser napisać:
C/C++
#include <string>
#include <iostream>
using namespace std;
int main()
{
    string a = "Jonek,Maria,Borzena,Tadek";
    string tab[ 10 ];
   
    size_t wsk = 0, num = 0;
    while( wsk <= a.size() )
    {
        tab[ num ] += a[ wsk ];
        wsk++;
        if( a[ wsk ] == ',' ) wsk++, num++;
       
    }
    //efekt:
    cout << tab[ 0 ] << endl;
    cout << tab[ 1 ] << endl;
    cout << tab[ 2 ] << endl;
    cout << tab[ 3 ] << endl;
   
}
P-30804
Mrowqa
» 2011-04-15 18:20:41
Całkiem nieźle, ja napisałbym raczej coś bardziej dłuższego ( dla początkujących bardziej zrozumiałego ) - to tak trochę nie przyjaźnie wygląda ;)

PS dodam -> jeśli jesteś początkującym radzę Ci sam próbować rozwiązać własne problemy ;) Gotowiec to najgorsze co może być - nic potem nie będziesz wiedzieć, a jak sam napiszesz - możesz się mnóstwo rzeczy nauczyć. Radzę Ci przeanalizować powyższy przykład i strać się go zrozumieć ;) - mogę napisać prostszy :D

Pozdrawiam,
Mrowqa
P-30805
szyx_yankez
» 2011-04-15 18:39:02
@UP

mogę napisać prostszy
To można jeszcze prościej? Napisz.
P-30806
diego997
Temat założony przez niniejszego użytkownika
» 2011-04-15 18:45:57
Nie chcialem tworzyc nowego posta wiec pisze tutaj mam kolejny problem, wkleje cały kod nie wiem co mam tutaj źle
C/C++
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    fstream plik;
    plik.open( "angielski.txt", ios::in | ios::out );
    string a;
   
    plik >> a;
    string tabl[ 10 ];
    string check;
    int b = 0;
    for( int i = 0; i < a.length(); i++ )
    {
       
        if( a[ i ] == ',' )
        {
            tabl[ b ] = check;
            check = "";
            b++;
           
        }
        else
        {
            check = check + a[ i ];
           
        }
       
    }
    cout << tabl[ 2 ];
   
   
   
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}


Chodzi o to żeby program odczytywał z pliku dane np. Tadek,Monika,Piotrek gdy zrobię to w programie czyli string a = "Tadek,Monika,Piotrek" to działa bez problemu a z pliku nie bardzo. W czym moze być problem ?[/i]
P-30808
« 1 » 2
  Strona 1 z 2 Następna strona