Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129

Работа с файлами, чтение данных, вывод данных в массив

14.01.2020, 18:32. Показов 1666. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, нужна Ваша помощь, только начинаю изучать программирование. Хочу написать по типу авторизации, все сделал, но не получается вывести данный с файла, занести их в массив и потом пройтись по этому массиву с помощью функции и сравнить с введенными данными, если введенный логин = логину находившемуся в файле то вывести сообщение об успешному входу в аккаунт . Вот сам код : ( СМОТРЕТЬ ТАМ ГДЕ VALUE == 2 , все остальное работает как нужно )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
int main() {
setlocale(0, "");
bool access = false;
const int N = 20; //массив данных, не важно сколько их указано
string massive[N];
string path = "test.txt";
fstream file;
 
file.open(path, fstream::in | fstream::out | fstream::app);    // файл на ввод и вывод данных с сохранением
if (!file.is_open()) return 1;    // если не удалось открыть файл - завершить программу
else {
    string login;
    int value;
    cout << "Файл успешно открыт!"<<endl;
    cout << "Выберите действие : \n1 - Зарегистрироваться \n2 - Войти в аккаунт \n3 - Показ всех данных" << endl;
    cout << "Введите действие : ";
    cin >> value;
 
    system("cls");
    if (value == 1) { //внесение логина в файл
        string addLogin;
        cout << "Введите ваш login : ";
        cin >> addLogin;
        file << addLogin << "\n";
        cout << "Ваш аккаунт зарегистрирован успешно!" << endl;
        }
    if (value == 2) { //смотреть этот блок кода, то что выводит данные в ком строку это точно, я проверял
        string enteredLogin; // логин который вводи пользователь
        cout << "Введите Ваш login : ";
        cin >> enteredLogin;
 
        for (int i = 0; i < N; i++) {
            while (!file.eof()){
                massive[i] = "";
                file >> massive[i];
                if (enteredLogin == massive[i]) access = true; 
                else access = false; 
                }
        }
        if (access == true)  cout << "Вход в " << enteredLogin << " аккаунт выполнен успешно !" << endl; 
        else if (access == false) cout << "Не правильно введены данные, попробуйте еще раз !" << endl; 
    }
    else if (value == 3) { //просто вывод данных
        cout << "Данные в файле : " << endl;
        while (!file.eof()) {
            login = "";
            file >> login;
            cout << login << endl;
        }
        
    }
file.close();
return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2020, 18:32
Ответы с готовыми решениями:

Работа с файлами (запись/чтение данных из бд)
Здравствуйте. Есть код(рабочий) #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;time.h&gt; #include &lt;string.h&gt; #include...

Ввод, вывод данных в Delphi и работа с файлами
Помогите составит прогу, которая выполняет такие действия: Ввод данных. При нажатии на кнопку сохраняет введенные данные в файл (именно...

Тема: Работа с внешними файлами. Ввод, вывод данных в текстовый файл
Файл прикреплен к сообщению, нужно написать программу: данные из текстового файла необходимо с использованием процедуры onActivate считать...

12
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.01.2020, 18:45
Лучший ответ Сообщение было отмечено origami111 как решение

Решение

Цитата Сообщение от origami111 Посмотреть сообщение
if (enteredLogin == massive[i]) access = true;
                else access = false;
А если логин правильный, не будет ли нормально закончить проверку (break; )? Может дальше будет что то не правильно и оно его сбросит на false
1
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
14.01.2020, 18:50  [ТС]
Дописал, но все равно при вводе логина, в проверке выдает что логин введен неправильно
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.01.2020, 18:51
Цитата Сообщение от origami111 Посмотреть сообщение
Дописал, но все равно при вводе логина, в проверке выдает что логин введен неправильно
А что говорит отладчик?
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
14.01.2020, 18:53  [ТС]
Цитата Сообщение от AndryS1 Посмотреть сообщение
А что говорит отладчик?
Отладчик ничего не говорит, в отладчике все идет как нужно, только после того как я ввожу свой логин на проверку(который точно есть в файле) выдает 41 строку кода
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.01.2020, 19:00
Цитата Сообщение от origami111 Посмотреть сообщение
Отладчик ничего не говорит, в отладчике все идет как нужно, только после того как я ввожу свой логин на проверку(который точно есть в файле) выдает 41 строку кода
Тогда читаем зачем нужен отладчик

Поставьте точку останова на 36-ую строку, что идёт в обеих переменных? (enteredlogin и massiv[i])
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
14.01.2020, 19:10  [ТС]
Цитата Сообщение от AndryS1 Посмотреть сообщение
Тогда читаем зачем нужен отладчик

Поставьте точку останова на 36-ую строку, что идёт в обеих переменных? (enteredlogin и massiv[i])
И в enteredLogin и в massiv[i] идет одинаковый логин,в моем случае qwerty.
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.01.2020, 19:14
Цитата Сообщение от origami111 Посмотреть сообщение
И в enteredLogin и в massiv[i] идет одинаковый логин,в моем случае qwerty.
Проблема скорее всего в спец. символах, через отладчик не видно были разницы в \n или \0?

Добавлено через 2 минуты
и немного странно выглядит
C++
1
2
if(access == true) 
else if (acces == false)
я бы написал
C++
1
2
if(access) 
else
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
14.01.2020, 19:18  [ТС]
Цитата Сообщение от AndryS1 Посмотреть сообщение
Проблема скорее всего в спец. символах, через отладчик не видно были разницы в \n или \0?

Добавлено через 2 минуты
и немного странно выглядит
C++
1
2
if(access == true) 
else if (acces == false)
я бы написал
C++
1
2
if(access) 
else
Разницы в спец символах вроде не видно, и с if else разницы особой нет как писать,
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.01.2020, 19:21
Цитата Сообщение от origami111 Посмотреть сообщение
Разницы в спец символах вроде не видно
Вы думаете обнаружили баг оператора == для строк в STL?)

Добавлено через 1 минуту
Ладно, если отладка отладчиком не проходит, сделайте отладочный вывод
Если строки не правильные - начните свой посимвольный разбор этих строк и выводите разницу в символах
(для явности может лучше указывать какой символ по счёту, можно просто не заметить служебного)
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
14.01.2020, 20:08  [ТС]
Цитата Сообщение от AndryS1 Посмотреть сообщение
Вы думаете обнаружили баг оператора == для строк в STL?)

Добавлено через 1 минуту
Ладно, если отладка отладчиком не проходит, сделайте отладочный вывод
Если строки не правильные - начните свой посимвольный разбор этих строк и выводите разницу в символах
(для явности может лучше указывать какой символ по счёту, можно просто не заметить служебного)
Не думаю что ошибка в ==, попробую сделать как Вы сказали, проверю напишу

Добавлено через 40 минут
Цитата Сообщение от AndryS1 Посмотреть сообщение
Вы думаете обнаружили баг оператора == для строк в STL?)

Добавлено через 1 минуту
Ладно, если отладка отладчиком не проходит, сделайте отладочный вывод
Если строки не правильные - начните свой посимвольный разбор этих строк и выводите разницу в символах
(для явности может лучше указывать какой символ по счёту, можно просто не заметить служебного)
Видимо ошибка была в массивах. Переделал без массива, всё работает, так же убрал цикл for, вот рабочий код :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if (value == 2) {
            string enteredLogin;
            cout << "Введите Ваш login : ";
            cin >> enteredLogin;
 
                while (!file.eof()) {
                    login = "";
                    file >> login;
                    if (enteredLogin == login) {
                        access = true;
                        break;
                    }
                    else {
                        access = false;
                    }
                }
            
            if (access) { 
                cout << "Вход в " << enteredLogin << " аккаунт выполнен успешно !" << endl; 
            }
            else { 
                cout << "Не правильно введены данные, попробуйте еще раз !" << endl;
            }
        }
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.01.2020, 20:17
А теперь радуйтесь! Вы решили проблему сами!
Довольно редкое явление)
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
14.01.2020, 20:19  [ТС]
Цитата Сообщение от AndryS1 Посмотреть сообщение
А теперь радуйтесь! Вы решили проблему сами!
Довольно редкое явление)
Благодарю за помощь !)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2020, 20:19
Помогаю со студенческими работами здесь

Работа с данными файлов Excel .xlsx. Чтение и вывод данных с использованием модуля openpyxl
Здравствуйте! Пытаюсь освоить работу чтения и записи данных в таблицы Excel, используя Python и его модуль openpyxl. При попытке записи или...

Работа с файлами данных
Средствами текстовых редакторов подготовить файл, содержащий два столбика числовых значений (значения аргумента и функции), считанные из...

работа с файлами данных
В задаче у меня стоит пункт считать элементы файла в массив ... как это сделать?

Работа с файлами (обновление данных)
Здравствуйте. Как вы думаете, возможно ли заменить данные в файле не переписывая весь файл? То есть например есть файл с такими записями ...

EF работа с файлами и базой данных
Добрый день. Есть программа, в ней присутствуют объекты, к каждому объекту должен быть прикреплён файл. Подскажите пожалуйста, каким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru