Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
HanDi
892 / 339 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
1

Поиск в текстовом файле

13.02.2015, 22:54. Просмотров 802. Ответов 5
Метки нет (Все метки)

Добрый вечер еще разок. Никак не могу сообразить, как реализовать следующий алгоритм (представляю его так):

есть база (назовем ее так), это обычный txt файл, где данные хранятся примерно следующим образом:

number | pin | balance | type
123456 | 123 | 120000 | VISA
321222 | 322 | 500000 | MasterCard
...

считать строку целиком из файла и проверить совпадает ли она с веденной информацией я, конечно же, могу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 char *line1=new char[255], *line2=new char[255];
    
    ifstream fin("input.txt");
    cin.getline(line1, 255);
    
    if (fin.is_open())
    {
      while (!fin.eof())
      {
        fin.getline(line2, 255);
        cout << line2 << endl;
        
        if(strcmp(line1, line2) == 0)
           {
              cout << "YES" << endl;
              break;
           }
        
      }
     fin.close();
    }
а как реализовать такой же поиск, только, чтобы совпадения искало только по number (до | ), а не по всей строке?
и в целом, как выдирать отдельные части из такого файла?
то есть мне нужно проверить, совпадает ли введенный номер number с уже существующими, если да, то считать pin, balance и type
может быть посоветуете, как реализовать похожий алгоритм другой моделью?

идея пока что такова, а вот с реализацией оного проблема
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2015, 22:54
Ответы с готовыми решениями:

Поиск в текстовом файле всех слов, заданных в другом текстом файле
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом...

Поиск в текстовом файле
Есть тестовый файл такого типа: Имя: Плотник Трудоемкость: 32 Время: 22...

Поиск в текстовом файле
Здравствуйте, нужно осуществить поиск нужной строки в файле .txt. Как быть?

Поиск в текстовом файле
Всем привет! Нужно на С++ написать программу,в поиске похожего не нашёл. Вот...

Поиск в текстовом файле со структурой
Здравствуйте! подскажите пожалуйста как грамотно реализовать поиск по...

5
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
13.02.2015, 23:06 2
Можно применить strtok() для разделения строки на части по символу '|', а после уже сравнивать.
Или regex.
1
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
13.02.2015, 23:07 3
вообще-то лучше БД
разве будет юзер вводить символы | или набьет лишних пробелов, или регистр изменит - все это поломает поиск
если уж совсем никак с БД следует разбить ввод на числа и искать по обычной схеме...
1
HanDi
892 / 339 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
13.02.2015, 23:10  [ТС] 4
Цитата Сообщение от saden Посмотреть сообщение
вообще-то лучше БД
разве будет юзер вводить символы | или набьет лишних пробелов, или регистр изменит - все это поломает поиск
если уж совсем никак с БД следует разбить ввод на числа и искать по обычной схеме...
БД-то оно лучше, но мне бы для начала научится на файлах это реализовать, тем более это будет проще, все равно, как мне кажется

не нужно юзеру вводить | символы, ему достаточно ввести number, чтобы я смог сравнить есть ли такой number в файле, и если есть, то считать в переменные другие данные (после |) для определенной строки, соответствующей number

Цитата Сообщение от nmcf Посмотреть сообщение
Можно применить strtok() для разделения строки на части по символу '|', а после уже сравнивать.
Или regex.
на регулярках пример можно?

strtok сейчас попробую, интересненько и уже похоже на правд
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
13.02.2015, 23:16 5
попробуй atoi - она должна собрать число до первого "глюка" (хотя от версии компилятора может зависеть...)
раз номер стоит на первой позиции он и будет числом, которое соберецца

Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
Можно применить strtok() для разделения строки на части по символу '|', а после уже сравнивать.
Это если нет пробелов между | и прочего Г
1
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
13.02.2015, 23:31 6
Лучший ответ Сообщение было отмечено HanDi как решение

Решение

Пробелы не помешают, если их известное количество или если их нет в четвёртом поле.

Вот выражение, предполагая, что пробелов по одному слева и справа от черты:
C++
1
2
3
4
5
6
7
    string s = "123456 | 123 | 120000 | VISA";
 
    std::regex r("^(\\d+) \\| (\\d+) \\| (\\d+) \\| (\\w+)$");
    std::smatch sm;
    std::regex_match(s, sm, r);
 
    cout << sm[1] << std::endl << sm[2] << std::endl << sm[3] << std::endl << sm[4] << std::endl;
1
13.02.2015, 23:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2015, 23:31

Поиск и сортировка в текстовом файле
В программирование не силен только начал изучать есть задача.Есть текстовый...

Поиск символа в текстовом файле
Как можно организовать поиск введенного символа в txt файле?

Поиск слова в текстовом файле
Программа ищет заданное слово в файле с текстом, в результате нужно вывести на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru