Zmniejszanie liter

0

Potrzebuje porównać nazwy podane przez użytkownika z loginami pobranymi do tablicy. Gdy chcę użyć funkcji 'transform' to kasuje mi zawartość tablicy.

bool Menagement::veryfication_login(string login)
{
    load_number_of_users();

    string *name = new string[the_number_of_users];

    string data;
    unsigned int counter = 0;

    ifstream fl("users.txt");

    while(fl)
    {
        getline(fl, data);
        transform(data.begin(), data.end(), data.begin(), ::tolower);

        if(data.substr(0, 7) == "Login: ")
        {
            name[counter] = data.substr(7);
            counter++;
        }
    }

    transform(login.begin(), login.end(), login.begin(), ::tolower);

    cout << login << name[0];

    system("pause");

    for(size_t i = 0; i < the_number_of_users; ++i)
    {
        if(login == name[i])
            return false;
    }

    delete [] name;

    return true;
}
 
1

Jestes pewien że w tym jest błąd? Może jednak to:

 
while(fl)
    {
        getline(fl, data);
        transform(data.begin(), data.end(), data.begin(), ::tolower);
 
        if(data.substr(0, 7) == "Login: ")
        {
            name[counter] = data.substr(7);
            counter++;
        }
    }

To nigdy nie zadziała, bo login jest z dużej ...

0

Podany kod działa tak:

http://zapodaj.net/216dcbf641931.png.html

Pomimo

cout << login << name[0];

wyświetla tylko login, który podałem, a nie wyświetla jeszcze name[0].

Gdy zakomentuję

//transform(data.begin(), data.end(), data.begin(), ::tolower);

działa tak

http://zapodaj.net/83931b5373425.png.html

1

:) najpierw cały napis tolower, a potem porównywanie z napisem zawierającym duże litery.

Z tego co widzę coś strasznie przekomponowujesz.
Pokaż zawartość pliku i opisz co chcesz z tym zrobić.

A jak już używasz C++, to idź na całość i użyj vector albo list.

1 użytkowników online, w tym zalogowanych: 0, gości: 1