Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Atropos
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 10
#1

Оставить только то что после разделителя (знака = ) - C++

27.02.2014, 21:52. Просмотров 353. Ответов 5
Метки нет (Все метки)

Здравствуйте, есть файл с кучей мусора и небольшими крупицами нужной информации, которая находится после знака = и начинается обязательно на число пример:
Кликните здесь для просмотра всего текста
IdMerchant=532541837
CARD_TYPE=CB
numCarte=4970402011238561
EXPIRATION_MONTH=8
EXPIRATION_YEAR=2015
codeSecurite=912
birthday=
LASTNAME=MALARD
FIRSTNAME=PIERRE
EMAIL=pierre.malard2@wanadoo.fr
ADDR_STREET=
ADDR_ZIPCODE=
ADDR_CITY=
ADDR_PHONE=
submit=

https://tpeweb.paybox.com/threedsecure/mpi_emt
Referer: https://tpeweb.paybox.com/cgi/RemoteMPI.cgi
User input: psgilletreportos822@hotmail.combanan...hotmail.comjXHMorMT3727261316bananas91psgbananas91psgTravancaArnaud91080courcouronnes4975926589627669715Trtavanca
POST data:

_mpi_merchantid=532541837
_mpi_amount=1300
_mpi_merchantref=1000002693420
_mpi_merchantdesc=Marchandises%2C Services
_mpi_currency=978
_mpi_ccnumber=4975926589627669
_mpi_ccexpdate=0615
_mpi_cvccvvcode=715
_mpi_device_category=0
_mpi_brand=VISA Prod Brand SG
IdTransMPI=1000002693420

http://36254.xml.blulocal.com/track
Referer: http://36254.xml.blulocal.com/click?...FWnPFc3fPZYbWA
User input:
POST data:

k=uACTRLAGRVGwZ5RGl31jw6vjeLtN3EFWnPFc3fPZYbWA
s=1389421925138155
js=1
hs=7
pw=1260
ph=982
pl=8
pt=30
ppl=nil
ppt=nil
sw=1280
sh=1024
ef=0
wf=0
wb=0

https://na.gcsip.com/orb/orb;jsessio...D32C4F57D7F617
Referer: https://na.gcsip.com/orb/orb?ACTION=...H7sEiZvssQc%3D
User input: buy fifa coinsaarron leenonnnonbeBEastfcAST FCTSPURSspurs3 dayscaroline wait ecarolinewaite@btinternet.com07715 8037820771580378245431341058257824672caroline waitecarolinewaite@btinternet.com.com077158038782Mama dou Sakhocarolinewaite@btinternet.com07715803782Mamoado SakSuou Sackhead achokhobeBEASTFC FCCeLiverpool45431310582578245672
POST data:

ACTION=DO_CONTINUE
PAYMENTPRODUCTID=1
REF=000000640800013512560000100001
CREDITCARDNUMBER=4543131058257824
CREDITCARDNUMBER_OBFUSCATED=
CREDITCARDNUMBER_CLEAR=
EXPIRYDATE_MM=06
EXPIRYDATE_YY=16
EXPIRYDATE=0616
CVV=672
CVV_OBFUSCATED=
CVV_CLEAR=
CARD_NUMBER=4975766407699502
CARD_VAL_MONTH=06
CARD_VAL_YEAR=16
CVV_KEY=197
USER=669819@032712587800063.140113
MERCHANT_ID=032712587800063
MERCHANT_COUNTRY=fr
CARD_TYPE=VISA
CARD_MODE=CARTE
CUSTOMER_COUNTRY=
PAIEMENT=VALIDER


Должно получится что-то вроде:
Кликните здесь для просмотра всего текста
4970402011238561
8
2015
912

4975926589627669
0615
715


4543131058257824
06
16
0616
672


Я так и не смог найти информации по работе с разделителями
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 21:52     Оставить только то что после разделителя (знака = )
Посмотрите здесь:

C++ Оставить в списке только первые вхождения одинаковых элементов
Из каждой группы подряд идущих слов оставить только одну C++
C++ 2 знака после запятой и не только
C++ Оставить в словах только первые вхождения каждой буквы.
Оставить в словах только первые вхождения каждой буквы C++
Функция stod() выводит только 4 знака после запятой C++
C++ Сократить задачу, оставить только самое главное
Оставить после знаков препинания только один пробел C++
C++ Оставить в слове только первые вхождения каждой буквы
C++ Оставить в числе только первые вхождения каждой цифры
Обрезание массива: оставить только положительные числа C++
Почему после 51-го знака после запятой выводятся одни нули? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.02.2014, 22:31     Оставить только то что после разделителя (знака = ) #2
Цитата Сообщение от Atropos Посмотреть сообщение
Я так и не смог найти информации по работе с разделителями
Класс string знаете?

Добавлено через 2 минуты
Цитата Сообщение от Atropos Посмотреть сообщение
IdMerchant=532541837
Цитата Сообщение от Atropos Посмотреть сообщение
_mpi_merchantid=532541837
Цитата Сообщение от Atropos Посмотреть сообщение
_mpi_amount=1300
и т.д.
Почему эти строки не входят в искомые?
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.02.2014, 22:51     Оставить только то что после разделителя (знака = ) #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Atropos, есть одно решение (код содержит: boost, C++11):
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
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
#include <fstream>
#include <boost/algorithm/string/regex.hpp>
 
int main()
{
   std::ifstream ifs("file.txt");
   if (!ifs.is_open())
   {
      std::cerr << "Error opening file!\n";
      return 1;
   }
   std::string text {std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>()};
   std::vector<std::string> result;
   boost::regex reg("(?<=\\w=)(\\d+)");
   boost::algorithm::find_all_regex(result, text, reg);
 
   for (const auto& i : result) std::cout << i << "\n";
 
   return 0;
}
igorrr37
1637 / 1265 / 130
Регистрация: 21.12.2010
Сообщений: 1,927
Записей в блоге: 7
27.02.2014, 22:56     Оставить только то что после разделителя (знака = ) #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <string>
#include <fstream>
#include <cctype>
 
int main ()
{
    std::ifstream ifs("in.txt");
    if(ifs.is_open())
    {
        std::string str;
        std::string::size_type ind;
        while(ifs >> str)
        {
            try
            {
                if(((ind = str.find('=')) != std::string::npos) && isdigit(str.at(ind + 1)))
                {
                    std::cout << str.substr(ind + 1) << '\n';
                }
            }
            catch(std::out_of_range)
            {
 
            }
        }
        ifs.close();
    }
    else
        std::cerr << "Unable to open input file\n";
    return 0;
}
Atropos
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 10
28.02.2014, 05:38  [ТС]     Оставить только то что после разделителя (знака = ) #5
Эти строчки не входят в искомые так-как первые 16 цифр это номер кредитной карты, затем идет дата окончания ее действия и три последних это секретный код

Всем спасибо за помощь
Tulosba
28.02.2014, 11:09     Оставить только то что после разделителя (знака = )
  #6

Не по теме:

Кто-нибудь уже попробовал что-то оформить по данным этих карт? Отпишитесь

Yandex
Объявления
28.02.2014, 11:09     Оставить только то что после разделителя (знака = )
Ответ Создать тему
Опции темы

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