Wczytywanie pliku tekstowego do tablicy

Wczytywanie pliku tekstowego do tablicy
PO
  • Rejestracja:prawie 5 lat
  • Ostatnio:około rok
  • Postów:33
0

Cześć głowię się dlaczego mój plik tekstowy nie chce przejść do tablicy, tekst wprowadzony z klawiatury bez problemu lokuje się w niej natomiast już z pliku nie chce ..

Kopiuj
#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int main()
{

fstream plik;
plik.open("tekst.txt", ios::in);

char tekst[100000];

getline(plik, tekst);

cout << tekst;

cout << endl<< endl<< endl;
cout<<"Podaj wzorzec: ";
  cin.getline(wzorzec,100);


    return 0;
}

JV
na początku to trzeba by doprowadzić do tego, żeby program dało się skompilować, zmienna wzorzec nie jest zdefiniowana. Czyżby wklejony kod ze schowka był starszy niż ten odnośnie do którego masz pytanie?
PO
@jvoytech: ok zmienna dodałem ale to nie zmienia faktu, że na 15 linijce wychodzi błąd "error: no matching function for call to 'getline(std::fstream&, char [1000])'" , chce aby plik tekstowy wchodził do tablicy, tak abym mógł napisać program wyszukujący wzorca z pliku tekstowego
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 dni
  • Postów:1027
3

Jesteś pewien, że plik się faktycznie otwiera? Dorzuć coś takiego:

Kopiuj
fstream plik;
plik.open("tekst.txt", ios::in);
if (!plik) {
    std::cerr << "Failed to open tekst.txt. Exiting...\n";
    return 1;
}
edytowany 4x, ostatnio: enedil
vpiotr
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
0

Najlepiej sprawdzaj kazda operacje We/Wy

PO
  • Rejestracja:prawie 5 lat
  • Ostatnio:około rok
  • Postów:33
0
Kopiuj
#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int main()
{

fstream plik;
plik.open("tekst.txt", ios::in);
if (!plik) {
    std::cerr << "Failed to open tekst.txt. Exiting...\n";
    return 1;
}

char tekst[1000];

getline(plik, tekst);

cout << tekst;

cout << endl<< endl<< endl;
cout<<"Podaj wzorzec: ";
  cin.getline(wzorzec,100);


    return 0;
}

Wyskakuje:
error: no matching function for call to 'getline(std::fstream&, char [1000])'|

edytowany 1x, ostatnio: pozdrawiam
JV
ten program się nie kompiluje, czemu wklejasz ponownie ten sam kod? pytam z ciekawości
BO
  • Rejestracja:około 6 lat
  • Ostatnio:7 dni
  • Postów:214
0

http://www.cplusplus.com/reference/string/string/getline/ z tego co widać getline przyjmuje za drugi argument stringa.

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 8 godzin
  • Lokalizacja:Szczecin
0

W C++ masz taki typ jak std::string i nie musisz zgadywać jakiej wielkości będzie wczytana linia.


PO
zgadza się ale zalezy mi na tym aby tekst był wczytany do tablicy, bo chce zrobić szukanie wzorca w tekscie, podawać dokładne miejsce znalezienia ilosc wystapien itp
kq
I w stringu tego nie można robić?
PO
skoro tak mówisz to na pewno się da, jak widać nie szukam rozwiązania w rozbudowanym algorytmie tylko męczę podstawę, więc siadam do lektury na temat stringa..
PO
  • Rejestracja:prawie 5 lat
  • Ostatnio:około rok
  • Postów:33
0

Ok, więc przeszedłem na stringi natomiast nie rozumiem, dlaczego nie zaznacza mi "^" miejsc występowania wzorca

Kopiuj
#include <iostream>
#include <string>
#include <cstdlib>
#include <time.h>
#include <fstream>

using namespace std;

int main( )
{
  string s, p;
  int i;

fstream plik;
plik.open("tekst.txt", ios::in);
if (!plik) {
    cout << "Failed to open tekst.txt. Exiting...\n";
    return 1;
}

getline(plik, s);

cout<<"Podaj wzorzec: ";
 getline( cin, p );


  cout << s << endl;


  // szukamy wzorca w łańcuchu

  for( i = 0; i < 58; i++ )
    cout << ( p == s.substr ( i, 3 ) ? "^": " " );

  cout << endl << endl;
  return 0;
}

edytowany 1x, ostatnio: pozdrawiam

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.