Pereiti prie turinio

C++ skaitymas is failo(VBE)


Rekomenduojami pranešimai

Stai pavizdys kaip skaityti is failo po linija ir po simboli. Manau susideliosi kaip toliau daryt.

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int main() 
{    //char sum = 0;
char x;
ifstream inFile("s1.txt");
if (!inFile) {
cout << "Unable to open file";        exit(1);
}
while (x != '\n') {
while (inFile >> x) {
cout<<"x = "<<x<<endl;
}
}
inFile.close();
getchar();
return 0;
}

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Problema ta, kad reikia stringo konkretaus ilgio, kartu su visais tarpais, o >> operatorius praleidzia tarpus. Ir dar taip pat nezinoma kiek zodziu bus tarp to stringo..

Na tai .getline() arba .read() tada, o išsirenki duomenis tada jau pats. Iš to, ką matau pas tave, užtektų pasiimt nors ir į atskirus stringus vardą/pavardę, po to sujungt.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Cia aisku senai as laikiau, bet kartais nebudavo egzamino uzduotyje nurodyta kiek bus eiluciu faile?

 

Kiek žiūrėjęs dar nebuvo, kad būtų nenurodytą, bet mokyklinėje programoje tiek c++, tiek pascal yra, kad turi mokėti nuskaityti. Taigi gali ir egazamine papulti toks dalykas.

 

http://77.79.24.138:...ol_pakartot.pdf pati paskutinė užduotis, apačioje.

O šituo atveju yra nurodyta kiek turi būti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

na manau kad per sudetingai jus mastote. Jugi nuskaitote ten varda i viena kintamaji pavarde i kita kintamaji ir paskui skaicius, viska nuskaitote su dvejais ciklais. su >> operatoriais. Jugi su abecele nedirbsite, tik su skaiciais.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

void skaitymas()
{
   char eil[20];
   fin >> n;
   for (int i = 1; i <= n; i++)
   {
       fin >> k;

       for (int j = 1; j <= k; j++)
       {
           n1++;
           fin.ignore(80, '\n');
           fin.get(eil, 20);
           A[n1].vardas = eil;
           fin >> A[n1].m >> A[n1].s;
       }
   }
}

 

Būtent šios programos nuskaitymo procedūrą rašiau taip.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

void skaitymas()
{
   char eil[20];
   fin >> n;
   for (int i = 1; i <= n; i++)
   {
       fin >> k;

       for (int j = 1; j <= k; j++)
       {
           n1++;
           fin.ignore(80, '\n');
           fin.get(eil, 20);
           A[n1].vardas = eil;
           fin >> A[n1].m >> A[n1].s;
       }
   }
}

 

Būtent šios programos nuskaitymo procedūrą rašiau taip.

 

fin.ignore(80, '\n');

 

Paaiškink ką būtent šita eilutė daro.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tiksliai nenupasakosiu, bet kažkaip praleidžia eilutę ir pereina į naują, kadangi nuskaičius pirmą kintamąjį, kuris virš pavadinimų yra, žymeklis vis dar toje pirmoje eilutėje yra, su tuo ignore mes pereinam į sekančia, kurioje jau tekstas parašytas. O tada fin.get(eil, 20); nuskaito viską kas yra tuose 20 simbolių. Programoje tam ir nurodytas simbolių skaičius, kuris naudojamas įrašyti vardą, pavadinimą ar kažką kitką.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nežinau, kažkaip daugelis labai jau sunkiai čia bando išsivartyti... Mano variantas toks:

 

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

int main() 
{    
 string Eilute;
 ifstream Failas("Duomenys.txt");        

  while (!Failas.eof())
  {
    getline(Failas, Eilute);    
    cout << Eilute << endl;
  }    

Failas.close();     
}

Redagavo tsuMi
Nuoroda į pranešimą
Dalintis kituose puslapiuose

na manau kad per sudetingai jus mastote. Jugi nuskaitote ten varda i viena kintamaji pavarde i kita kintamaji ir paskui skaicius, viska nuskaitote su dvejais ciklais. su >> operatoriais. Jugi su abecele nedirbsite, tik su skaiciais.

 

O jei vardas sudarytas iš daugiau nei 2 žodžių (Žanas Klodas Van Damas)?

 

Nežinau, kažkaip daugelis labai jau sunkiai čia bando išsivartyti... Mano variantas toks:

 

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

int main() 
{    
 string Eilute;
 ifstream Failas("Duomenys.txt");        

  while (!Failas.eof())
  {
    getline(Failas, Eilute);    
    cout << Eilute << endl;
  }    

Failas.close();     
}

 

Reikia nuskaityti tik pirmus 20 simbolių, kurie bus asmens vardas. Po dar toje pačioje eilutėje yra kiti duomenys.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...