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

Lekcja 32

Ostatnio zmodyfikowano 2014-06-23 11:03
Autor Wiadomość
Mateus.
Temat założony przez niniejszego użytkownika
Lekcja 32
» 2014-06-23 10:20:05
Witam wszystkich!
To mój pierwszy post na forum i problem :D
Oto kod:

C/C++
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void funkcja()
{
    ifstream plik;
    string wiersz;
    plik.open( "D://plik.txt" );
    if( plik.good() )
    {
        cout << "Wczytano ";
    }
    else
    {
        cout << "Nie wczytano ";
    }
    cout << endl << endl;
    string zmienna;
    cout << "Podaj wyraz: ";
    getline( cin, zmienna );
    cout << endl;
    while( getline( plik, wiersz ) )
    {
        size_t pozycja = wiersz.find( zmienna );
        if( pozycja == string::npos )
        {
            continue;
        }
        else
        {
            cout << wiersz << endl;
        }
    }
    plik.close();
}
int main()
{
    funkcja();
    return 0;
}
Wczytano

Podaj wyraz: Kurs

--==[ Kurs C++ | http://cpp0x.pl ]==--
http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-tekstu-z-pliku/355
 
I tu wszystko działa jak powinno.
Ale gdy dodam wypisanie całego tekstu z pliku przed wyszukiwaniem tekstu to dzieją się cuda.
Oto kod, który wariuje:
C/C++
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void funkcja()
{
    ifstream plik;
    string wiersz;
    plik.open( "D://plik.txt" );
    if( plik.good() )
    {
        while( getline( plik, wiersz ) )
        {
            cout << wiersz << endl;
        }
    }
    else
    {
        cout << "Nie wczytano ";
    }
    cout << endl << endl;
    string zmienna;
    cout << "Podaj wyraz: ";
    getline( cin, zmienna );
    cout << endl;
    while( getline( plik, wiersz ) )
    {
        size_t pozycja = wiersz.find( zmienna );
        if( pozycja == string::npos )
        {
            continue;
        }
        else
        {
            cout << wiersz << endl;
        }
    }
    plik.close();
}
int main()
{
    funkcja();
    return 0;
}
--==[ Kurs C++ | http://cpp0x.pl ]==--
Obecnie uczysz sie obslugi plikow. Link do czytanego rozdzialu:
http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-tekstu-z-pliku/355
Udalo Ci sie odczytac plik?

Wykonaj teraz prace domowa ze wspomnianego rozdzialu! :)



Podaj wyraz: Kurs


Proszę o wytłumaczenie dlaczego tak się dzieje.
P-112552
SeaMonster131
» 2014-06-23 10:47:04
Po wypisaniu na początku wszystkich linijek, kursor w pliku znajduje się na jego końcu. Przenieś kursor na początek, lub zamknij i ponownie otwórz plik.
P-112553
Mateus.
Temat założony przez niniejszego użytkownika
» 2014-06-23 10:57:53
Dzięki za szybką pomoc.

Załączam poprawiony kod (gdyby ktoś miał problem):
C/C++
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void funkcja()
{
    ifstream plik;
    string wiersz;
    plik.open( "D://plik.txt" );
    if( plik.good() )
    {
        while( getline( plik, wiersz ) )
        {
            cout << wiersz << endl;
        }
    }
    else
    {
        cout << "Nie wczytano ";
    }
    plik.close();
    plik.open( "D://plik.txt" );
    string zmienna;
    cout << "Podaj wyraz: ";
    getline( cin, zmienna );
    cout << endl;
    while( getline( plik, wiersz ) )
    {
        size_t pozycja = wiersz.find( zmienna );
        if( pozycja == string::npos )
        {
            continue;
        }
        else
        {
            cout << wiersz << endl;
        }
    }
    plik.close();
}
int main()
{
    funkcja();
    return 0;
}

Aha, a jak przenieść kursor na początek, bo otym chyba w kursie nie było?
P-112554
pekfos
» 2014-06-23 10:59:40
Metodą seekg()/seekp(). W tym przypadku tą pierwszą.
P-112555
Mateus.
Temat założony przez niniejszego użytkownika
» 2014-06-23 11:03:10
Ok. Jeszcze raz dzięki wszystkim za szybką pomoc.
P-112556
« 1 »
  Strona 1 z 1