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

Вывод контейнера типа set <string> в файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Vector в С++(2) http://www.cyberforum.ru/cpp-beginners/thread928278.html
у меня есть абстрактный класс Фигура (базовый), от него наследуются классы Circle, Rectangle , я создал вектор типа указатель на Фигура и положил туда вперемешку объекты классов Окружность и Прямоугольник, а теперь мне нужно вызвать методы каждого объекта вектора, мне подсказали, как написать этот метод, но не пойму почему надо так (выделено желтым) базовый класс: class Figure { public:...
C++ Как написать программу с несколькими .cpp файлами Как написать программу с несколькими .cpp файлами? Сколько сам пробывал, появляется куча ошибок( Конкретно меня интересует, как их соединить вместе IDE - Microsoft Visual Studio 2010 http://www.cyberforum.ru/cpp-beginners/thread928238.html
Не могу собрать программу C++
собираю в netbeans + cygwin исходники выдает ошибку не знаю как исправить. TCPClient.cpp // TCPClient.cpp : Defines the entry point for the application. // #include "stdafx.c"
C++ Вызов dll ресурсов в dll
Помогите пожалуйста, вот такого рода проблемка вышла: Есть у меня dll и есть необходимость вызвать ресурс в потоке dll файла, который создается при подключении. Ресурс объявляю как обычно это делаю в exe проектах: выбираю создать ресурс, выбираю файл, в resource.h беру ID ресурса, а сам .h инклюдом подключаю. При попытке проверить ресурс функцией FindResource. Передаю ей модуль (получаю из...
C++ Как в main() создать указатель на функцию, которая находится в классе? http://www.cyberforum.ru/cpp-beginners/thread928193.html
В этом примере как определить указатель на функцию F()? class A { public: bool F(int &a, int &b) { return a<b; } }; int main() {
C++ C++ файлы ifstream/ofstream Доброе время суток нужна небольшая помощь с записью/считыванием из файла вообщем при считывание из файла eof() не определяет конца файла и пытается считать следующий элемент понимает что там ничего нету и выдает ошибку это я так понимаю данную ситуацию ! Смотрим пример: пример имеет 100% сходство с ситуацией просто в нем меньше не сущевственного мусора: ... подробнее

Показать сообщение отдельно
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 428

Вывод контейнера типа set <string> в файл - C++

24.07.2013, 20:35. Просмотров 1523. Ответов 12
Метки (Все метки)

Конечный файл пустует, я всяко-разно пытался, вот мой вариант с итераторами. Смотрите закоментированный код - всё остальное полностью рабочее, кроме вывода в файл.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <algorithm>
#include <string>
#include <iterator>
#include <set>
#include <fstream>
#include <cstdlib>
#include <vector>
 
using std :: vector;
using std :: set;
using std :: cout;
using std :: cin;
using std :: string;
using std :: cerr;
using std :: ifstream;
using std :: ofstream;
 
void  NumberOfLines (int argc, char * argv [], int entries []);
 
int main (int argc, char * argv []) {
    if (argc == 1) {
        cerr << "Usage: files for input, last for output\n";
        exit (1);
    };
    int quantity = argc - 2;         //êîëè÷åñòâî ГґГ*éëîâ
    int * entries = new int [quantity];   //Г¬Г*Г±Г±ГЁГў, Гў êîòîðîì õðГ*Г*ГЁГІГ±Гї êîëè÷åñòâî Г§Г*ГЇГЁГ±ГҐГ© (ñòðîê) Гў ГЄГ*æäîì ГґГ*éëå
    NumberOfLines (argc, argv, entries);  //ГґГіГ*êöèÿ ïîäñ÷¸òГ* êîëè÷åñòâГ* Г§Г*ГЇГЁГ±ГҐГ©
    char ch;
    std :: ostream_iterator <string>  show (cout, "\n");
    vector <set <string> > lists;    //ГЄГ®Г*ГҐГ·Г*ûé Г¬Г*Г±Г±ГЁГў Г§Г*ГЇГЁГ±ГҐГ©
    int emptylists = 0; //êîëè÷åñòâî ïóñòûõ ГґГ*éëîâ, ÷òîáû ïðè âûâîäå lists [i] Г*ГҐ âîçГ*ГЁГЄГ*ëî îøèáîê
    ifstream inputfile;
    for (int i = 0; i < quantity; i++) {        //ïðî÷èòГ*ГІГј ГўГ±ГҐ ГґГ*éëû, êðîìå ïåðâîãî ГЁ ïîñëåäГ*ГҐГЈГ®
        if (entries [i] != 1) {
            inputfile.open (argv [i + 1]);                     //Гі âõîäГ*îãî argv [i + 1] ГґГ*éëГ* entries[i] ñòðîê
            set <string> tempset;                   //âðåìåГ*Г*ûé ñïèîê äëÿ õðГ*Г*ГҐГ*ГЁГї ГІГҐГЄГіГ№ГҐГЈГ® îáðГ*ГЎГ*òûâГ*åìîãî ГґГ*éëГ*
            for (int j = 0; j < entries[i]; j++) {  // ïðî÷èòГ*ГІГј ГўГ±ГҐ ñòðîêè argv [i + 1] ГґГ*éëГ*                   
                string tempstr;                     //âðåìåГ*Г*Г*Гї ñòðîêГ* äëÿ õðГ*Г*ГҐГ*ГЁГї ГІГҐГЄГіГ№ГҐГ© îáðГ*ГЎГ*òûâГ*åìîé ñòðîêè
                while (inputfile.get (ch) && ch != '\n') {
                    tempstr += ch;
                };
                tempset.insert (tempstr);
            };
            lists.push_back (tempset);
            cout << "\"" << argv [i+1] <<"\" list:\n";
            copy (lists [i - emptylists].begin (), lists [i - emptylists].end (), show);
            cout << "\n";
            inputfile.clear ();
            inputfile.close ();
        }
        else  {
            emptylists++;
            cout << "\"" << argv [i+1] <<"\" list is empty.\n\n";
            continue;
        };
    };
    cout << "Result:\n";
    int v = 0;
    set <string> resultlist;
    vector <set <string> > :: iterator viter;
    for ( viter = lists.begin (); viter != lists.end (); viter++, v++)
        merge (lists [v].begin (), lists [v].end (), resultlist.begin (), resultlist.end (), std :: inserter (resultlist, resultlist.begin ()));
    copy (resultlist.begin (), resultlist.end (), show);
    cout << "\n";
    ofstream outputfile;
    outputfile.open (argv [argc], std :: ios_base :: trunc | std :: ios_base :: app);
    /*std :: ostream_iterator <string> output (outputfile, "\n");
    copy (resultlist.begin (), resultlist.end (), output);
    */
    /*set <string> :: iterator  siter;
    for (siter = resultlist.begin (); siter != resultlist.end (); siter++)
        outputfile << *siter << "\n";
    */
    system ("pause");
    return 0;
};
 
void  NumberOfLines (int argc, char * argv [], int entries []) {
    int quantity = argc - 2;
    for (int i = 0; i < quantity; i++)
        (entries [i]) = 1;
    ifstream inputfile;
    for (int i = 0; i < quantity; i++) {    //ïîäñ÷¸ò êîëè÷åñòâГ* Г§Г*ГЇГЁГ±ГҐГ© Гў ГЄГ*æäîì ГґГ*éëå
        inputfile.open (argv [i + 1]);
        char ch;
        while (inputfile.get (ch))
            if ( ch == '\n')
                (entries [i])++;
        if (ch == '\n')     //åñëè Гў ГЄГ®Г*öå ГґГ*éëГ* ïðîñòî ГЇГіГ±ГІГ*Гї ñòðîêГ*, óìåГ*ГјГёГЁГІГј êîëè÷åñòâî ñòðîê
            (entries [i])--;
        inputfile.clear ();
        inputfile.close ();
    };
    return;
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru