• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z odczytem z pliku .txt funkcji string

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
211 wizyt
pytanie zadane 17 marca 2020 w C i C++ przez Qswarty1257 Nowicjusz (140 p.)

Hej,
od niedawna zacząłem swoją przygodę z programowaniem w c++. Całkiem nieźle się w to wkręciłem, byłem na jednym kursie na którym nauczyłem się podstaw tego języka. Obecnie samemu w domu trochę ćwiczę nad nim, wzorując się trochę na filmach z kanału Pasja Informatyki ( ͡° ͜ʖ ͡°). Obecnie mam pewien problem z odczytem linii z pliku .txt, nie jestem w stanie odczytać tego, czy zmienna  string log i has się na tym pliku znajdują. Byłbym bardzo wdzięczny, jeżeli ktoś umiałby mi pomóc, tudzież wytłumaczył ( ͡° ͜ʖ ͡°)

 case '1':
                        {
                        plik.open("konta.txt",ios::in);
                            if (plik.good()==false)
                            {
                                cout <<"Wystapil nieoczekiwany blad, prosimy sprobwac pozniej" <<endl;
                                exit (0);
                            }
                        cout << "Prosze podac login i haslo " << endl;
                        cin >> log;
                        cin >> has;
// dla for'a dodam pare zmiennych
    int dlugosc=log.length();
    int dlugosc2=has.length();
                            for (int nr_linii=1;;nr_linii++)
                            {
                                if (log[dlugosc-1]==getline(plik,linia),has[dlugosc2-1]==getline(plik,linia))
                                {
                                    cout <<"Witamy" << log <<endl;
                                    system("pause")
                                    break;
                                }
                                else
                                {
                                    cout<<"Wystapil blad, prosimy sporobowac ponownie pozniej"<<endl;
                                }
                            }
                        plik.close();
                        }
                        break;

 

komentarz 17 marca 2020 przez tkz Nałogowiec (42,020 p.)
Pokaż cały kod, oraz format zawartości konta.txt.
komentarz 17 marca 2020 przez Qswarty1257 Nowicjusz (140 p.)

Plik .txt jest nie jest zapisany

#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
using namespace std;

int main()
{
while (true)
{
system ("cls");
    char wybor1; char wyborc1; string log; string has; string login; string  haslo; string linia;
    cout << "Witaj w Serwisie SDZ" << endl;
    cout << "Co chesz zrobiæ?" << endl;
    cout << "1 Zaloguj sie" << endl;
    cout << "2 Moj koszyk" << endl;
    cout << "3 Wyszukaj produkt" << endl;
    cout << "4 Zakoncz program" <<endl;
    fstream plik;
    wybor1=getch();
        switch (wybor1)
        {
            case '1':
            {
            cout << "Prosze wcisnac 1, aby sie zalogowac lub 2, zeby utowrzyc konto" << endl;
            wyborc1=getch();
                switch (wyborc1)
                    {
                    default:
                        {
                        cout << "Brak podanej operacji" << endl;
                        system("pause");
                        }
                        break;
                    case '1':
                        {
                        plik.open("konta.txt",ios::in);
                            if (plik.good()==false)
                            {
                                cout <<"Wystapil nieoczekiwany blad, prosimy sprobwac pozniej" <<endl;
                                exit (0);
                            }
                        cout << "Prosze podac login i haslo " << endl;
                        cin >> log;
                        cin >> has;
// dla for'a dodam pare zmiennych
    int dlugosc=log.length();
    int dlugosc2=has.length();
                            for (int nr_linii=1;;nr_linii++)
                            {
                                if (log[dlugosc-1]==getline(plik,linia),has[dlugosc2-1]==getline(plik,linia))
                                {
                                    cout <<"Witamy" << log <<endl;
                                    system("pause")
                                    break;
                                }
                                else
                                {
                                    cout<<"Wystapil blad, prosimy sporobowac ponownie pozniej"<<endl;
                                }
                            }
                        plik.close();
                        }
                        break;
                    case '2':
                        {
                        plik.open("konta.txt",ios::out | ios::app);
                        cout << "Prosze podac login " << endl;
                        cin >> login;
                        cout << "Prosze podac haslo " << endl;
                        cin >> haslo;
                        plik<<login<<endl;
                        plik<<haslo<<endl;
                        plik.close();
                        }
                        break;
                    }
            }
            break;
            case '2':
            {
            cout <<"Obecnie nie ma nic w twoim koszyku!" <<endl;
            cout << endl;
            system("pause");
            }
            break;
            case '3':
            {
            cout << "Sklep tymczasowo niedostepny!" <<endl;
            cout << endl;
            system("pause");
            }
            break;
            case '4':
            {
            exit(0);
            break;
            }
            default:
            {
            cout << "Brak podanego wybrou, prosze wybrac liczbe z zakresu 1-3" <<endl;
            cout << endl;
            system("pause");
            }
        }
}
    return 0;
}

 

komentarz 17 marca 2020 przez tkz Nałogowiec (42,020 p.)
Z tego co widzę, to kod się nawet nie skompiluje. getline nie ma operatora ==, więc jak chcesz je porównać?
komentarz 17 marca 2020 przez Qswarty1257 Nowicjusz (140 p.)
zmieniłem to na =, a także przecinek na %%
komentarz 17 marca 2020 przez tkz Nałogowiec (42,020 p.)

A zaczęło się przez to kompilować? 

Założenie:

Format z czytanego pliku

a b
c d
e f
g h
i j
k l

Możemy czytać tak: 

std::string a, b;
while (file>> a >> b)
{
    if(a==password && b==login)
        //zrob cos tam
}

 

komentarz 17 marca 2020 przez Qswarty1257 Nowicjusz (140 p.)

Nie, mam jeden obecnie problem, a kod wygląda tak:

for (int nr_linii=1;;nr_linii++)
                            {
                                if (log[dlugosc-1]=getline(plik,linia) %% has[dlugosc2-1]=getline(plik,linia))
                                {
                                    cout <<"Witamy" << log <<endl;
                                    system("pause");
                                    break;

expected primary-expression before '&' token

komentarz 17 marca 2020 przez Qswarty1257 Nowicjusz (140 p.)
dobra już wiem jaki mam problem, mój mega głupi bład..
komentarz 17 marca 2020 przez Qswarty1257 Nowicjusz (140 p.)
chodziło mi o to, że pomyliłem %% z &&.., aczkolwiek teraz mi pokazuje, że:

lvalue required as left operand
komentarz 17 marca 2020 przez tkz Nałogowiec (42,020 p.)
#include <iostream>
#include <fstream>

void printMenu()
{
    std::cout << "Witaj w Serwisie SDZ" << '\n';
    std::cout << "Co chesz zrobiæ?" << '\n';
    std::cout << "1 Zaloguj sie" << '\n';
    std::cout << "2 Moj koszyk" << '\n';
    std::cout << "3 Wyszukaj produkt" << '\n';
    std::cout << "4 Zakoncz program" << '\n';
}

int main(void)
{

    while (true)
    {
        printMenu();

        switch (std::cin.get())
        {
        case '1':
        {
            std::ifstream databaseFile("db.txt");
            std::string login;
            std::cin >> login;
            std::string password;
            std::cin >> password;
            std::string loginFromFile;
            std::string passwordFromFile;
            while (databaseFile >> loginFromFile >> passwordFromFile)
            {
                if (login == loginFromFile && password == passwordFromFile)
                    std::cout << "Zalogowano.\n";
                else
                    std::cout << "Niestety.\n";
            }
        }
        break;

        default:
            break;
        }
    }

    return 0;
}
admin admin

Pierwszy kod, drugi plik z, którego czytam. Nie mówię, że kod jest najpiękniejszy, ale powinien pokazać zamysł czytania danych. 

komentarz 17 marca 2020 przez Qswarty1257 Nowicjusz (140 p.)
dzięki za pomoc!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 851 wizyt
pytanie zadane 27 marca 2020 w C i C++ przez Hubert731 Obywatel (1,650 p.)
0 głosów
0 odpowiedzi 132 wizyt

93,166 zapytań

142,177 odpowiedzi

321,946 komentarzy

62,495 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 688p. - dia-Chann
  2. 676p. - CC PL
  3. 675p. - Łukasz Piwowar
  4. 664p. - Marcin Putra
  5. 662p. - Łukasz Eckert
  6. 649p. - Michal Drewniak
  7. 641p. - rucin93
  8. 641p. - rafalszastok
  9. 629p. - Adrian Wieprzkowicz
  10. 629p. - Piotr Aleksandrowicz
  11. 621p. - Dawid128
  12. 612p. - Mikbac
  13. 611p. - ksalekk
  14. 606p. - Mariusz Fornal
  15. 602p. - Michał Telesz
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...