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

Работа с файлами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание отдельного модуля http://www.cyberforum.ru/cpp-beginners/thread620588.html
Здравствуйте!!! Старожилы помогите решить проблемку по созданию отдельного модуля к проекту.Дело в том что (:) знаю что америку не открываю ) при объявлении типа или функции требуется подключить (инклудировать) определенный модуль в котором содержится описание данного типа или функции. Вопрос как определить или узнать в каком именно модуле это богатство находится. Я понимаю можно каждый...
C++ Кто знает как запустить данный проект? проблемка с запуском готовых компиляций... и сбором исходников... помогите кто-нибудь разобраться http://www.cyberforum.ru/cpp-beginners/thread620579.html
C++ Объявление класса после инициализации
Подскажите возможно ли объявление класса в такой последовательности, чтобы вместо объявления написать class car;, просто видел в некоторых исходниках такое объявление, но не уверен что оно для этого применяется. Сам код не компилится. #include <iostream> using namespace std; class car; int main() {
Плавное изменение цвета треугольника C++
надеюсь, разделом не ошибся. нужно написать windows forms приложение, в котором пользователю нужно выбрать значения цвет1 и цвет2 и плавно изменять цвет треугольника. насколько я понял, цвет1 и цвет2 - цвета низшей и высшей точки треугольника, т.к. так он будет плавно изменять свой цвет. визуально я себе примерно все это представляю, но с точки зрения реализации пока не хватает опыта....
C++ Открыть браузер и заполнить формы регистрации http://www.cyberforum.ru/cpp-beginners/thread620542.html
И так,поставил себе задачу сделать автоматическую регистрацию на websurf.ru(не реклама).Программа должна зайти по реферальной ссылке,нажать на кнопку регистрация.Заполнить формы.Нажать зарегистрироваться.После того,как регистрация произошла - программа должна очистить куки.Сменить прокси.Пароли,даты рождения,имена,прокси и e-mail'ы программа должна брать из .txt файла,для прокси отдельный файл....
C++ Модульное программирование Прошу помощи в решении моей задачи.Заранее благодарен. "Модульное программирование" Примечание. Разместить определение данных в заголовочном файле, а определения функций и главную функцию программы в двух отдельных файлах. Вариант: Дана квадратная матрица А порядка п. Получить матрицу 1/2(А*А(в степени"Т")) . Определить функции сложения двух квадратных матриц и умножения матрицы на... подробнее

Показать сообщение отдельно
Pupsen
Сообщений: n/a
07.07.2012, 16:51     Работа с файлами
Надо исправить работу по заданию.

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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
// Для работы с функциями fopen, fgets итд
#include <stdio.h>
// Для работы с функциями _open, _read итд
#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>
// Для работы с потоками, строками и контейнерами
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <locale>
#include <algorithm>
using namespace std;
 
 
//////////////////////////////////////////////////////////////////////////////
//////////////////// Задание 1 ///////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
 
/**
    С помощью функций потокового ввода-вывода языка С (fopen, fread, fscanf…) прочитать файл countryInfo 
    и вывести на экран названия всех стран и их столиц
*/
void task1() {
    // Открытие файла в режиме "только для чтения"
    FILE* sourceFile;
    fopen_s(&sourceFile, "../countryInfo.txt", "r");
 
    char* buff = new char[1024];
    char* tld = new char[50];
    char* countryName = new char[128];
 
    
 
    // считывание строк до тех пор, пока fgets возвращает непустое значение (пока файл не закончится)
    while ( fgets(buff, 1024, sourceFile) != NULL) {
        // пропуск строк, начинающихся с символа #
        if (buff[0] == '#') continue;
        // считывание iso3-кода, названия страны и столицы из строки файла
 
        // Внимание! этот вариант разбора некорректно работает с названиями, содержащими пробелы.
        // sscanf считает разделителями и пробелы, и табуляции
        // sscanf(buff, "%*2s %3s %*d %*s\t%s\t\%s", iso3, countryName, capital);
 
        char * token_ctx = NULL;
        char * token = strtok_s( buff, "\t", &token_ctx);
 
        int n = 0;
        while (token != NULL) {
            switch(n) {
                case 9: strcpy_s(tld,50,token); break;
                case 4: strcpy_s(countryName,128,token); break;
                
            }
            token = strtok_s( NULL, "\t", &token_ctx);
            n++;
        }
        cout << tld << ' ' << countryName << '\t' << endl;
    }
 
    delete tld;
    delete countryName;
    
    delete buff;
 
    // закрытие файла
    fclose(sourceFile);
}
 
//////////////////////////////////////////////////////////////////////////////
//////////////////// Задание 2 ///////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/**
* элемент, записываемый в файл - iso3 код страны и позиция в исходном файле
*/
struct index_record {
    string iso3;
    long pos;
    index_record(long _pos, char* _str) {
        pos = _pos;
        iso3 = _str;
    }
};
 
/**
* фукнция считывает индексный файл, сформированный в task2() и выводит в консоль его содержимое
*/
void readIndexFile() {
    ifstream indexFile("index.bin",ios::binary);
 
    int count = 0;
    char buff[4 + sizeof(long)];
    while(indexFile.read(buff,4 + sizeof(long))) {
        index_record rec(*(long*)(buff+4),buff);
        cout << rec.iso3 << " " << rec.pos << endl;
        count++;
    }
    indexFile.close();
    cout << "Index file contains " << count << " countries" << endl;
}
 
/**
    С помощью функций нижнего уровня работы с файлами (_open, _write…) 
    сформировать индексный файл для файла countryInfo. 
    Индексный файл должен содержать ISO3-код страны и смещение от начала исходного файла 
    до начала строки с описанием страны.
*/
void task2() {
    ifstream sourceFile("../countryInfo.txt");
 
    // ВНИМАНИЕ! В сдаваемых работах считывание файла должно использовать функции _read и _tell!!!
    vector<index_record> index;
    char* buff = new char[1024];
    for(long pos = sourceFile.tellg(); sourceFile.getline(buff,1024); pos = sourceFile.tellg()) {
        // пропуск строк, начинающихся с символа #
        if (buff[0] == '#') continue;
        char iso3[4] = {buff[3],buff[4],buff[5],0};
        index.push_back(index_record(pos,iso3));
    }
 
    sourceFile.close();
 
    // Запись файла индекса - открытие, потом в цикле запись сначала строки, потом значения смещения
    // затем закрытие файла
    int fileHandle;
    fileHandle = _open("index.bin", _O_RDWR|_O_TRUNC|_O_CREAT|_O_BINARY, _S_IREAD | _S_IWRITE );
    for (vector<index_record>::iterator b = index.begin(); b != index.end(); b++) {
        index_record rec = *b;
        //cout << rec.iso3 << " " << rec.pos << endl;
        _write(fileHandle,(rec.iso3.c_str()),rec.iso3.length() + 1);
        _write(fileHandle,&(rec.pos),sizeof(long));
    }
    _close(fileHandle);
 
    readIndexFile();
}
 
 
 
//////////////////////////////////////////////////////////////////////////////
//////////////////// Задание 3 ///////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
 
/**
* Структура с описанием страны (используется в 3м задании)
*/
struct country {
    wstring title;
    wstring iso2;
    int population;
    wstring geonameid;
    wstring tld;
 
};
bool titleSort(country& a, country& b) {return a.iso2 < b.iso2;}
 
/**
* Функция считывает файл strings.txt в вектор строк.
* Вектор потом используется для вывода названий - в моем примере там только заголовок "Список стран"
*/
vector<wstring> readStrings(locale& locale) {
    vector<wstring> vec;
    wifstream file("strings.txt");
    file.imbue(locale);
    wstring line;
    while(getline(file, line))
        vec.push_back(line);
    file.close();
    return vec;
}
 
/**
    С помощью классов библиотеки iostream сформировать html-файл, 
    содержащий описания 10 стран с самым длинным названием
*/
void task3(int p1, int p2, char x) {
    //std::locale::global(std::locale("rus_rus.1251"));
    setlocale(LC_ALL,"Russian");
    codecvt_byname<wchar_t, char, mbstate_t> * code = new codecvt_byname<wchar_t, char, mbstate_t> ("en_EN.UTF-8");
    locale utf8locale(locale(), code);
    vector<wstring> texts = readStrings(utf8locale);
 
    wifstream input("../countryInfo.txt");
    wofstream html("my.html");
 
    input.imbue(utf8locale);
    html.imbue(utf8locale);
 
    vector<country> countries;
    while (!input.eof()) {
        wstring str;
        getline(input,str);
        if (str.length() > 0 && str.at(0) != '#') {
            wstringstream ss(str);
            country c;
            ss >> c.iso2;
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            getline(ss, c.title, wchar_t('\t'));
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            ss >> c.population;
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            getline(ss, c.tld, wchar_t('\t'));
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            ss.ignore(5000,'\t');
            getline(ss, c.geonameid, wchar_t('\t'));
 
            if(p1 <= c.population && c.population <= p2)
                if(c.tld[1]==x)
                countries.push_back(c);
        }
    }
    input.close();
 
    sort(countries.begin(), countries.end(), titleSort);
 
    html << "<!doctype html>" << endl;
    html << "<html><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /><head>";
    html << "</head>"<<endl;
    html << "<body>"<<endl;
    html << "<h1>" << "Country" << "</h1>"<<endl;
    html << "<table border=\"1\">";
    html << "<tr><td>" << "<b>Number</b>" << "</td><td>" << "<b>Title</b>" << "</td><td>" << "<b>Geonameid</b>" << "</td><td>" << "<b>Iso2</b>" << "</td><td>" << "<b>Tld</b>" << "</td><td>" << "<b>Population</b>"<< "</td></tr>" << endl;
 int n=1;
    for (vector<country>::iterator s = countries.begin(); s != countries.end(); s++) {
        html << "<tr><td>" << n++ << "</td><td>" <<(*s).title << "</td><td>" << (*s).geonameid << "</td><td>" << (*s).iso2 << "</td><td>" << (*s).tld << "</td><td>" << (*s).population << "</td></tr>" << endl;
    }
 
    html << "</table>";
    html << "</body>";
}
 
 
 
//////////////////////////////////////////////////////////////////////////////
//////////////////// Запуск заданий //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
 
bool checkFile() {
    bool ret = true;
    FILE* sourceFile;
    ret = !fopen_s(&sourceFile,"../countryInfo.txt","r");
    fclose(sourceFile);
    return ret;
}
 
int main() {
    int p1, p2;
    char x;
    cin >> p1; cin >> p2; cin >> x;
    if (checkFile()) {
        task1();
        task2();
        task3(p1,p2, x);
    } else {
        cout << "Oops, file not opened - check, is it in solution folder." << endl;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru