Skocz do zawartości

Odczytywanie danych z pliku tekstowego


faustin

Pomocna odpowiedź

Witam 

  mam za zadanie napisac program , który bedzie oczytywał dane z pliku tekstowego , w , który znajdują sie osoby oraz ich wiek i znajdywał osobe najstarsza  sposród tych zamieszczonych w tym pliku osób, tyle tylko ,że w ogóle nie wczytuje mi nawet danych z tego pliku do konsoli juz na samym początku....

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

using namespace std;

int main()
{
 string imie;
 ifstream fin("datami.txt");
 cout<<"to jest zawartośc pliku txt";
 char ch;
 while(fin.get(ch))
 {


    cout<<ch;
 }
 fin.close();
 return 0;
}

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

2 minuty temu, faustin napisał:

błąd był taki że nie dałam pliku tekstowego do tego samego folderu co projekt 

Sugerujesz że dało się ten .txt odczytać do zwykłego char - a? 

Link do komentarza
Share on other sites

Szczerze to nie wiem już ale próbowałam różnymi sposobami dawałam różne kody które odczytywały pliki tekstowe ale żadne nie działały mimo że program kompilowal się i błąd tkwił że po prostu nie dałam pliku txt do tego folderu co trzeba.

Link do komentarza
Share on other sites

A tak jeszcze z ciekawości zapytam gdybym miała plik tekstowy określający przyrost procentowy wartości kryptowaluta i chciałabym na tej podstawie napisać program który odczytawszy ten plik tekstowy wybierał by ta kryptowaluta która jest najbardziej opłacalna to co trzeba by było zrobić? Wtedy czasem nie trzeba by było wczytywać tego char znak po znaku i patrzeć gdzie jest '-' bo za '-' jest wartość liczbowa którą trzeba porównać ?

Mój plik tekstowy to 

Bitcoin-7%

Altcoin-8%

Itp jest ich z 20 

Link do komentarza
Share on other sites

25 minut temu, faustin napisał:

A tak jeszcze z ciekawości zapytam gdybym miała plik tekstowy określający przyrost procentowy wartości kryptowaluta i chciałabym na tej podstawie napisać program który odczytawszy ten plik tekstowy wybierał by ta kryptowaluta która jest najbardziej opłacalna to co trzeba by było zrobić? Wtedy czasem nie trzeba by było wczytywać tego char znak po znaku i patrzeć gdzie jest '-' bo za '-' jest wartość liczbowa którą trzeba porównać ?

https://stackoverflow.com/questions/14265581/parse-split-a-string-in-c-using-string-delimiter-standard-c

https://www.cplusplus.com/reference/string/string/c_str/

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

dziekuje ale to i tak w moim przypdku nie działa

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

fstream newfile;
  
   newfile.open("C:\\Users\\Laptop\\Desktop\\datami.txt",ios::in); //open a file to perform read operation using file object
   if (newfile.is_open()){   //checking whether the file is open
      string tp;
      while(getline(newfile, tp)){ //read data from file object and put it into string.
         // cout<<"wczytano plk:";

         cout << tp << "\n"; //print the data of the string


      }
     // string tp;

   }
   string tp;
   string delimeter="-";
    //  string token=tp.substr(0,tp.find(delimeter));
     string token= tp.erase(0,tp.find(delimeter)+delimeter.length());
     // size_t pos=0;
     // string token;
     // while((pos=tp.find(delimeter)))!=
      //string token=tp.substr(0,tp.find(delimeter));
    //string s= tp.erase(0,pos+delimeter.length());
    cout<<token;

    return 0;

   }

 

Link do komentarza
Share on other sites

42 minuty temu, faustin napisał:

dziekuje ale to i tak w moim przypdku nie działa

Tradycyjnie ktoś zawalił  z klamrami...

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

int main()
{
    fstream fileStream;
    const char delimiter = '-';

    // TODO: update file address
    fileStream.open(R"(C:\Users\nov11\Documents\Datami.txt)", ios::in); // open a file to perform read operation using file object
    if (fileStream.is_open()){   // checking whether the file is open
        string tp;
        while(getline(fileStream, tp)){ // read data from file object and put it into string.
            size_t charIndex;
            cout << tp << "\n"; // print the data of the string
            charIndex = tp.find(delimiter); // find the index of the delimiter
            tp = tp.substr(charIndex + 1, tp.size() - charIndex - 2); // get the substring from the delimiter, remove percent mark and delimiter on the way
            cout << tp << "\n";

            int percentage_value = stoi(tp); // convert the string to integer

            // TODO: use percentage value to find max value
        }

    }

    return 0;

}

W dużym uproszczeniu - jeżeli musimy coś policzyć dla każdej linijki to umieszczamy to w pętli, nie poza pętlą... Zwłaszcza w przypadku dynamicznej operacji na plikach.

P.S. tak ten kod da się uprościć z kilku zmiennych 😉 Zostały dla lepszej przejrzystości.

Edytowano przez H1M4W4R1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.