Tiedostosta luku ja parsettaminen (C++)?

hbjhbjh

Mulla on ongelmana, että en osaa parsia tiedostosta lukemani rivin sisältöä. Koitin googeletella apuja, mutta ei siitä mitään tullut, kun joka esimerkkiin oli tungettu pointterikikkailuja tai jotain muuta pro-meininkiä. (pointtereiden hyötyä en o koskaan ymmärtänyt)

Luen tiedostosta rivejä, joissa on aina rivillä viisi numeroa, jotka on sitten erotettu tabulaattorilla toisistaan. Tavoitteena olisi lukea ne taulukkoon, jossa sitten voisin suorittaa luetulla rivillä olleilla numeroilla vertailuja.

1 2 3 4 5
6 7 8 9 10
2 3 4 5 6
jne...

Siis tähän tyyliin ne on filussa, mut tabulaattori välilyönnin tilalla.

Kannattaako mun käyttää 2-ulotteista taulukkoa: taulu [100][5]; että pääsen vertailemaan niitä rivin lukuja keskenään? Tällä hetkellä se lukee aina rivin 1-ulotteisen taulukon soluun.

/****************************/
string s;
           
    int laskuri=0;
    string filusta[100];
   
   
    //Luetaan tiedosto riveittäin taulukkoon
    while ( getline(fi,s) )
{   

filusta[laskuri]=s;
laskuri ;

continue;

}   
    fi.close();
/********************************/

Entä pitääkö mun suorittaa joku tyyppimuunnos, että noi luvut ovat oikeasti numeroita, eivätkä tekstiä?

Yritin sellasta, että int s; mutta se valitti jotain virhettä heti. Sitten koitin int numero =int(s); mutta taas heitti jotain erroria. Jotain tyyppierroria mun muistaakseni.

9

1019

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • perinteinen C

      Tuohan onnistuu scanf:llä melko helposti. Luet vain rivin ja sitten scanf:llä teksti numeroiksi.

    • teuro
    • puusilima_

      tarvitaan jos muuttaa char/int

      atoi(),itoa()

      mihin tarvitset 2ulotteisen taulukon? jos oikein tajusin niin et mihinkään.
      //esim.
      #include

      char teksti[10]=("50234");
      int i;
      //teksti numeroiksi
      i = atoi( teksti );

      //numerot tekstiksi
      itoa (i,teksti,10);

    • puusilima_

      "pointtereiden hyötyä en o koskaan ymmärtänyt) "

      no tässäpä nyt ongelmaasi liittyen? yksinkertaisesti.

      jos et tiedä valmiiksi kuinka suuri luettavan tiedoston koko on niin mitä sitten kun muuttujasi string str[100] ylittyy?
      sitten tulee(tai siis jo alunalkaen ja pois tuo str) kyseeseen pointterit ja new...

      • prosessori käyttää

        AINA osoittimia - kielestä riippumatta ? jos käytetään prosessorin hierarkiaa OIKEIN.


      • puusilima_
        prosessori käyttää kirjoitti:

        AINA osoittimia - kielestä riippumatta ? jos käytetään prosessorin hierarkiaa OIKEIN.

        riippuu siitä mitä tarkoitat "Perustasolla".
        Perustasolla prosessori käyttää ykkösiä ja nollia(virta päällä/virta pois päältä).


      • prosessori siirtää
        puusilima_ kirjoitti:

        riippuu siitä mitä tarkoitat "Perustasolla".
        Perustasolla prosessori käyttää ykkösiä ja nollia(virta päällä/virta pois päältä).

        kytkiminä toimivien puolijohteitten rajapintojen yli varauksia - akseptorit ja donorit avainasemassa.

        :D


    • Johnnie83

      Suosittelisin kyllä osoittemien oppimista koska paitsi että ne ovat käteviä ja säästävät muistia niin ne hyvin käytettynä helpottaa koodia huomattavasti. Mutta, jos käyttää C :an STL kirjastoa niin onnistuu se ilman osoittimiakin.
      Tässä esimerkki:

      #include
      #include
      #include
      #include
      using namespace std;

      int main(int argc, char *argv[])
      {
         /* Muuttujat */
         vector< vector > matriisi;
         vector m_rivi;
         string buffer;
         string::iterator it;
         ifstream tiedosto;
         stringstream arvo_s;
         int arvo;   
         
         /* Avataan tiedosto lukua varten */
         tiedosto.open ("tiedosto.txt");
         
         /* Luetaan tiedosto rivi riviltä ja tallennetaan matriisiin   */
         while( getline(tiedosto,buffer) )
         {
            /* Luodaan uusi rivi */
            m_rivi.clear();
         
            /* Muutetaan tekstirivin numerot luvuiksi(int) */
            for(it=buffer.begin(); it != buffer.end() ; it )      
               if(*it != '\t')
               {
                  arvo_s > arvo; arvo_s.clear();
                   m_rivi.push_back(arvo);
               }

            /* Tallennetaan rivi matriisiin */
            matriisi.push_back(m_rivi);   
         }

         /* Suljetaan tiedosto */
         tiedosto.close();

         /* Tulostetaan luettu matriisi */
         for(int i=0; i

      • tässäkin on käytössä

        "
        for(int i=0; i


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Olet toisen kanssa

      ...ja minä yhä vain sinua kaipaan. Tiedän ettet ole onnellinen siellä. Älä hukkaa aitoa onnea ja rakkautta hukkaan vain
      Ikävä
      224
      1556
    2. Näytit taas lihoneen.

      Tynnyri se vaan kasvaa.
      Ikävä
      29
      1403
    3. Kuka teistä on paras nainen

      A-nainen? J-nainen? K-nainen? M-nainen? S-nainen? Vai kenties joku muu...? 😊
      Ikävä
      61
      1269
    4. Immu otti pataan

      Olen pettynyt, hänen piti viedä Stagalaa kuin litran mittaa - mutta kuinka kävikään? Voi hemmetti sentään.... Ääääääh!
      Kotimaiset julkkisjuorut
      69
      1227
    5. Onko jotain mistä

      Olet huolissasi kaivattusi suhteen?
      Ikävä
      78
      1204
    6. Osaako joku selittää tätä

      Että miksi mulle on joka toinen ventovieras ihminen tyly ainakin ilmeillään ja eleillään?
      Ikävä
      75
      1172
    7. Jos me joskus nähtäisiin

      niin ei kai sen vielä tarvitsisi merkitä sen enempää? Ja voihan olla ettei kumpikaan enää siinä vaiheessa edes haluaisi
      Ikävä
      103
      1163
    8. Koska vietät

      Yhteisen yön kaivattusi kanssa?
      Ikävä
      54
      998
    9. Lesken uusi

      Onko totta että puolangan kunnalla töissä ollut mies joka kuoli niin sen vaimolla jo uusi lohduttaja. Pitäneekö paikkans
      Puolanka
      18
      962
    10. Persun suusta:"Köyhät on luusereita ja ansaitsevat köyhyyden"

      Ministeri Juuston apulainen näin uhoaa. Mitäs siinä. Kyllä on jo tiedetty muutaman vuoden hallitustyön pohjalta että per
      Lieksa
      175
      855
    Aihe