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

Szukanie frazy w linii pliku.txt

Ostatnio zmodyfikowano 2018-09-17 12:40
Autor Wiadomość
Groudz377
Temat założony przez niniejszego użytkownika
Szukanie frazy w linii pliku.txt
» 2018-09-15 16:49:04
Cześć, pisze program, który ma zapisywać i odszukiwać imiona i nazwiska znajdujące się w dwóch osobnych plikach. Każde imię/nazwisko zapisuje w kolejnej linii. Gdy chce wyszukać nazwisko wpisuje imię i zapisuje numer linii w, której zostało odnalezione, żeby móc w ten sposób znaleźć linię z nazwiskiem w drugim pliku.
program wykonuje się do if(jest!=string::npos). Próbowałem już to robić na kilka sposobów np. porównywaniem stringa szukanego z obecnie wczytaną linią (tekst): if(imies==tekst) i też nie działa, chociaż z tego co rozumiem w C++ powinno.


C/C++
void znajdz()
{
   
    cout << "Szukaj po:" << endl << "1.imieniu" << endl << "2.nazwisku" << endl << "3.menu" << endl;
   
    int wybor;
    cin >> wybor;
    switch( wybor )
    {
    case 1:
        {
           
            imiona.open( "imiona.txt", ios::out | ios::app );
            if( !imiona.good() == true )
            {
                cout << "Nie udało się odnaleźć pliku." << endl;
               
            }
            string imies;
            cout << "podaj imie: " << endl;
            cin >> imies;
           
           
            int a = 0;
            while( !imiona.eof() )
            {
               
               
               
                string tekst;
                getline( imiona, tekst );
               
                int jest = tekst.find( imies ); //Do tego momentu program się wykonuje
                if( jest != string::npos ) //Ten if się nie wykonuje, pomimo tego, że takie imię znajduje się w pliku
                {
                   
                    cout << "tu jestem" << endl;
                    string nazwisko;
                    nazwiska.open( "nazwiska.txt", ios::out | ios::app );
                    if( !nazwiska.good() == true )
                    {
                        cout << "Nie udało się odnaleźć pliku." << endl;
                       
                    }
                    for( int i = 0; i < a; i++ )
                    {
                        getline( nazwiska, nazwisko );
                       
                    }
                    getline( nazwiska, nazwisko );
                    cout << nazwisko << imies << endl;
                    nazwiska.close();
                   
                }
                a++;
            }
            imiona.close();
            break;
        }
P-172323
pekfos
» 2018-09-15 16:56:14
Otwierasz plik do zapisu, nie do odczytu.
P-172324
Groudz377
Temat założony przez niniejszego użytkownika
» 2018-09-17 00:09:54
Wielkie dzięki, program działa. Mam jeszcze jeden mały problem mianowicie, czasem program zaczyna zapisywać nazwiska od np.6-ego wiersza w pliku, co ciekawe dzieje się tak tylko w nazwiskach, pomimo, że kod funkcji wczytaj dla imion jest identyczny.

C/C++
#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include "Rekord.h"

using namespace std;
fstream imiona;
fstream nazwiska;
void menu();
void wczytaj()
{
    string imie, nazwisko;
   
   
   
    imiona.open( "imiona.txt", ios::app | ios::out );
    if( !imiona.good() == true )
    {
        cout << "Nie udało się odnaleźć pliku." << endl;
       
    }
    cout << "podaj imie: " << endl;
    cin >> imie;
    imiona << imie << endl;
    imiona.close();
    //wczytanie imienia
   
   
   
   
    nazwiska.open( "nazwiska.txt", ios::app | ios::in );
    if( !nazwiska.good() == true )
    {
        cout << "Nie udało się odnaleźć pliku." << endl;
       
    }
    cout << "podaj nazwisko: " << endl;
    cin >> nazwisko;
    nazwiska << nazwisko << endl;
    nazwiska.close();
   
}
P-172329
pekfos
» 2018-09-17 12:40:28
Więc pewnie nie jest identyczny.
P-172330
« 1 »
  Strona 1 z 1