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

Распарсить текстовый файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Класс "Комплексное число". Как считать и записать данные в файл? http://www.cyberforum.ru/cpp-beginners/thread1235098.html
Надо переделать код программы, чтобы данные шли из входного файла и записывались в выходной Во входном файле 2 комплексных числа a и b. И думаю, их записать в виде,например, 1 3 2 4 5 3 6 2 И считать его в отдельные массивы или в один и тот же? А в выходном файле записываются результаты вычислений с,d,f Помогите с написанием самого кода вышеописанного..
C++ Namespace boost не содержит члена lexical_cast .... #include "boost\lexical_cast.hpp" int main() { ..... m.insert(std::pair<int, std::string>(i, boost::lexical_cast<int>(i)); ..... } http://www.cyberforum.ru/cpp-beginners/thread1235057.html
Предохранители. Задача с тимуса №1327 C++
Ограничение времени: 1.0 секунды Ограничение памяти: 64 МБ Янус Полуэктович (не помню уже, А или У) воспользовался машиной только один раз. Он принес с собой небольшую полупрозрачную коробочку, которую присоединил к "Алдану". Примерно через десять секунд работы с этой приставкой в машине полетели все предохранители, после чего Янус Полуэктович извинился, забрал свою коробочку и ушел....
снова крестили нолики C++
#include <iostream> using namespace std; int main () { int a,k=0; char mas; while(k<10) { for(int i=0;i<7;i++)
C++ Операторы: выбрать правильный вариант http://www.cyberforum.ru/cpp-beginners/thread1234989.html
Помогите выбрать правильный вариант в этой задаче(и еще объясните, почему). Заранее спасибо. struct complex { double re,im; }; complex c1,c2; double x,y; Какой из операторов есть недопустимым: 1) с1.re=x;
C++ Какое значение будет иметь а? Помогите выбрать правильный вариант в этой задаче(и еще объясните, как вы считали). Заранее спасибо. int a; int f(int x) { a=0; return x; } Какое значение будет иметь а, после: а=1; подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
28.07.2014, 11:49     Распарсить текстовый файл
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/////////////////////////////////////////////////////////////////////////////////////////
//Программно я могу получить список следующего вида:
//..., 
//{
//id: 7,
//login: 'idaspin',
//password: '638kjg1kjghd8xzckj2kj3hdhg876smnnm4jd'
//}, 
//{
//id: 8,
//login: 'marchall_95',
//password: '8sd920gxzc3dasdada6947opkjgo92cv637',
//status: 'vip'
//},...
//
//как я через c++ (из файла к примеру) могу вытащить все id'шники VIP пользователей?
/////////////////////////////////////////////////////////////////////////////////////////
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef T_str::size_type    T_pos;
/////////////////////////////////////////////////////////////////////////////////////////
char    const   LEFT_BRACE_SYMB                 =   '{';
char    const   RIGHT_BRACE_SYMB                =   '}';
char    const   APOSTROF_SYMB                   =   '\'';
char    const   SPACE_SYMB                      =   ' ';
char    const   COMMA_SYMB                      =   ',';
char    const   TAB_SYMB                        =   '\t';
T_str   const   COMMA_AND_SPACE_STR             =   T_str( 1, COMMA_SYMB ) + SPACE_SYMB;
T_str   const   VIP_WORD_IN_SINGLE_QUOTES       =   T_str( 1, APOSTROF_SYMB ) + "vip" + APOSTROF_SYMB;
T_str   const   ID_WORD_WITH_COLON_AND_SPACE    =   "id: ";
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_person
{
    //-----------------------------------------------------------------------------------
    int     ID_;
    T_str   login_;
    T_str   password_;
    bool    is_vip_status_;
    //-----------------------------------------------------------------------------------
    T_str   to_str()
    {
        std::ostringstream  sout;
 
        sout    <<  LEFT_BRACE_SYMB
                <<  ID_WORD_WITH_COLON_AND_SPACE        <<  ID_                             <<  COMMA_AND_SPACE_STR
                <<  "login: "       <<  APOSTROF_SYMB   <<  login_      <<  APOSTROF_SYMB   <<  COMMA_AND_SPACE_STR
                <<  "password: "    <<  APOSTROF_SYMB   <<  password_   <<  APOSTROF_SYMB;
 
        if( is_vip_status_ )
        {
            sout    <<  COMMA_AND_SPACE_STR
                    <<  "status: "
                    <<  VIP_WORD_IN_SINGLE_QUOTES;
        }
        
        sout    <<  RIGHT_BRACE_SYMB
                <<  std::endl;
 
        return  sout.str();
    }
    //-----------------------------------------------------------------------------------
};
/////////////////////////////////////////////////////////////////////////////////////////
T_str   generate_and_get_rand_str()
{
    int     rand_str_len    =   rand() % 10 + 3;
    T_str   res_str;
 
    for( int  i = 0; i < rand_str_len; ++i )
    {
        res_str += 'a' + rand() % 26;
    }//for
 
    return  res_str;
}
/////////////////////////////////////////////////////////////////////////////////////////
T_str   generate_and_get_person_str_with_id
    (
        int         id,
        bool    &   is_vip
    )
{
    T_person    person  =   {
                                id,
                                generate_and_get_rand_str(),
                                generate_and_get_rand_str(),
                                is_vip  =   rand() % 2 == 0
                            };
 
    return  person.to_str();
}
/////////////////////////////////////////////////////////////////////////////////////////
void    generate_person_list_and_write_to_file( T_str    const   &   filename )
{
    std::ofstream   ofile( filename );
 
    std::cout   <<  std::endl
                <<  std::endl
                <<  std::endl
                <<  "Сгенерированы vip-персоны с ID:"
                <<  std::endl;
 
    for( int  i = 0; i < 7; ++i )
    {
        if( i > 0 )
        {
            ofile   <<  ", ";
        }
 
        bool    is_vip  =   false;
 
        ofile   <<  generate_and_get_person_str_with_id
                        (
                            i,
                            is_vip
                        );
 
        if( is_vip )
        {
            std::cout   <<  i
                        <<  TAB_SYMB;
        }
    }//for
}
/////////////////////////////////////////////////////////////////////////////////////////
void    print_id_of_vip_persons_found_in_file( T_str    const   &   filename )
{
    std::ifstream   ifile( filename );
    std::ostringstream  sout;
    sout    <<  ifile.rdbuf();
    T_str   file_str    =   sout.str();
 
 
    std::cout   <<  std::endl
                <<  std::endl
                <<  "Найдены в файле vip-персоны со следующими ID:"
                <<  std::endl;
 
    T_pos   right_pos   =   T_str::npos;
    T_pos   vip_pos     =   0;
 
    while   (
                (
                    vip_pos     =   file_str.rfind( VIP_WORD_IN_SINGLE_QUOTES, right_pos )
                )
                != T_str::npos
            )
    {
        T_pos   id_word_pos     =   file_str.rfind( ID_WORD_WITH_COLON_AND_SPACE, vip_pos );
        right_pos               =   id_word_pos;
        T_pos   num_begin_pos   =   file_str.find( SPACE_SYMB, id_word_pos      );
        T_pos   num_end_pos     =   file_str.find( COMMA_SYMB, num_begin_pos    );
 
        std::istringstream  ssin
            (
                file_str.substr( num_begin_pos, num_end_pos - num_begin_pos )
            );
 
        int     id  =   0;
        ssin    >>  id;
        std::cout   <<  id
                    <<  TAB_SYMB;
    }//while
 
    std::cout   <<  std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
    srand(unsigned(time(0)));
    for(;;)
    {
        const   T_str   FILE_NAME   =   "list.txt";
        generate_person_list_and_write_to_file  ( FILE_NAME );
        print_id_of_vip_persons_found_in_file   ( FILE_NAME );
        system("pause");
    }//for
}
 
Текущее время: 04:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru