Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
1

If работа с файлом

24.12.2014, 12:01. Просмотров 768. Ответов 33
Метки нет (Все метки)

Часть кода в которой я записываю строки в файл,по параметрам которые совпадают,как записать те строки в которых нет совпадение?

как проверить есть ли строка в файле?


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
while (readStr(fin1, vstr1))
    {
        while (readStr(fin2, vstr2))
        {
            if (vstr1[3] == vstr2[3] && vstr1[4] == vstr2[4] && vstr1[5] == vstr2[5] )
            {
                printNewStr(vstr1, vstr2);
                cout<<'.';
                vstr2.clear();
 
            }
 
            else
             {
                //cout<<'/';
                vstr2.clear();
                continue;
            }
 
 
               }
 
        fin2.clear();
 
fin2.seekg(0);
    vstr1.clear();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2014, 12:01
Ответы с готовыми решениями:

Работа с файлом
Поясню: записываю файл из двумерного целочисленного вектора вот такой строкой:...

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

Работа с файлом
char *FileName =&quot;123.txt&quot;; int h=fileno(fopen(FileName,&quot;r+&quot;)); FileName=&quot;\0&quot;;...

Работа с файлом
Привет, нужно что-бы массив принимал три рандомных символа &quot;a b c&quot; и записал...

работа с файлом
Как найти определённое слово в массиве? такого вида 217.118.79.33 dan HTTP...

33
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 12:21 2
Цитата Сообщение от ebywku Посмотреть сообщение
как проверить есть ли строка в файле?
считать всё из файла, проверить, если надо - изменить прочитанное и переписать по новой на старое.
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 12:31  [ТС] 3
Цитата Сообщение от dzrkot Посмотреть сообщение
считать всё из файла, проверить, если надо - изменить прочитанное и переписать по новой на старое.
ну как бы исходя из логики я понимаю что надо делать,но не знаю как)
я бы не отказался от алгоритма проверки)
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 12:35 4
Цитата Сообщение от ebywku Посмотреть сообщение
ну как бы исходя из логики я понимаю что надо делать,но не знаю как)
я бы не отказался от алгоритма проверки)
C++
1
2
3
string str1="hello world";
string str2="hello world";
if(str1 == str2)
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 13:17  [ТС] 5
Цитата Сообщение от dzrkot Посмотреть сообщение
C++
1
2
3
string str1="hello world";
string str2="hello world";
if(str1 == str2)
не затруднит на моем коде пример?ибо у меня не особо получилось прикрутить
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 13:22 6
Цитата Сообщение от ebywku Посмотреть сообщение
не затруднит на моем коде пример?ибо у меня не особо получилось прикрутить
нет, простите но я помогаю тем кто хоть что-то понимает или тем кому интересно - это пожалуйста. А когда такой подход - лишь бы сдать преподу, за вас я делать не буду.
1
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 13:40  [ТС] 7
Цитата Сообщение от dzrkot Посмотреть сообщение
нет, простите но я помогаю тем кто хоть что-то понимает или тем кому интересно - это пожалуйста. А когда такой подход - лишь бы сдать преподу, за вас я делать не буду.


тоже правильно,но все же вы имеете ошибочное мнение по поводу моих намерений на счет этой программы,
проблема в том что задача есть,а объяснить некому,моих знаний хватает на "Hello world" и немного с массивами дружу,а тут работа с файлами с которой я знакомлюсь впервые и если для строк которые заданы в программе прекрасно понимаю как решить мою задачу,то для строк заданных с файла - я не имею никакого понятия.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 13:46 8
Цитата Сообщение от ebywku Посмотреть сообщение
тоже правильно,но все же вы имеете ошибочное мнение по поводу моих намерений на счет этой программы,
проблема в том что задача есть,а объяснить некому,моих знаний хватает на "Hello world" и немного с массивами дружу,а тут работа с файлами с которой я знакомлюсь впервые и если для строк которые заданы в программе прекрасно понимаю как решить мою задачу,то для строк заданных с файла - я не имею никакого понятия.
вот есть книги, есть раздел литература. Я сейчас не понимаю в чём ваш вопрос, вы выложили какой-то кусок кода, где нету никакого считывания из файла, и спрашиваете как проверять строки...Как мне с вами вести конструктивный диалог?Вы бы почитали что ли хоть об этом...
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 15:01  [ТС] 9
Цитата Сообщение от dzrkot Посмотреть сообщение
вот есть книги, есть раздел литература. Я сейчас не понимаю в чём ваш вопрос, вы выложили какой-то кусок кода, где нету никакого считывания из файла, и спрашиваете как проверять строки...Как мне с вами вести конструктивный диалог?Вы бы почитали что ли хоть об этом...


Можно адекватно указывать на ошибки человека,не выложил код - напишите :" я не могу вам помочь,пока не увижу весь код"...,я не думаю что это тот форум где стоит поднимать эту тему разговора,к вам вопрос нет,спасибо за помощь.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 15:11 10
Цитата Сообщение от ebywku Посмотреть сообщение
Можно адекватно указывать на ошибки человека,не выложил код - напишите :" я не могу вам помочь,пока не увижу весь код"...,я не думаю что это тот форум где стоит поднимать эту тему разговора,к вам вопрос нет,спасибо за помощь.
а можно адекватно формулировать вопрос? Я по прежнему готов вам помочь, но боюсь что вы попросите от меня лишь готовое решение.
Цитата Сообщение от ebywku Посмотреть сообщение
Часть кода в которой я записываю строки в файл,по параметрам которые совпадают,
Я более чем уверен, что раз вы выкладываете какой-то непонятный кусок кода, в котором по вашему запись в файл, то вы понятия не имеете что он делает.
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 15:36  [ТС] 11
Цитата Сообщение от dzrkot Посмотреть сообщение
а можно адекватно формулировать вопрос? Я по прежнему готов вам помочь, но боюсь что вы попросите от меня лишь готовое решение.

Я более чем уверен, что раз вы выкладываете какой-то непонятный кусок кода, в котором по вашему запись в файл, то вы понятия не имеете что он делает.


Тогда укажите мне путь - книгу в которой все описано,ну или статью,если это вас не затруднит.


А на счет кода,могу построчно прокомментировать,на счет того почему я выложил его : я думал что можно решить проблему в том же цикле и не особо видел смысла выкладывать весь код,видимо в этом я ошибся.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 15:40 12
Цитата Сообщение от ebywku Посмотреть сообщение
Тогда укажите мне путь - книгу в которой все описано,ну или статью,если это вас не затруднит.
целый раздел книг на форуме, от себя - С.Прата Язык программирования С++.

Цитата Сообщение от ebywku Посмотреть сообщение
А на счет кода,могу построчно прокомментировать,на счет того почему я выложил его : я думал что можно решить проблему в том же цикле и не особо видел смысла выкладывать весь код,видимо в этом я ошибся.
Прокомментируйте, давайте с вами сядем вместе и разбирёмся =)
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 15:54  [ТС] 13
Цитата Сообщение от dzrkot Посмотреть сообщение
целый раздел книг на форуме, от себя - С.Прата Язык программирования С++.


Прокомментируйте, давайте с вами сядем вместе и разбирёмся =)

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
while (readStr(fin1, vstr1))    //readstr - Функции  парсит файл на строки,строки на элементы,парсим первый файл 
    {
        while (readStr(fin2, vstr2))  // парсим второй
        {
            if (vstr1[3] == vstr2[3] && vstr1[4] == vstr2[4] && vstr1[5] == vstr2[5] ) // мое условие отбора 
            {
                printNewStr(vstr1, vstr2); // функция записи в файл
                cout<<'.';
                vstr2.clear(); // очищаем строку вторую
 
            }
 
            else
             {
                //cout<<'/';
                vstr2.clear(); // опять же
                continue; //переход  к след. итерации цикла
            }
 
 
               }
 
        fin2.clear();
      fin2.seekg(0); перемещаем указатель ввода на 0
    vstr1.clear();
    }
ну вот как то так
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 16:03 14
Цитата Сообщение от ebywku Посмотреть сообщение
ну вот как то так
а vstr1 это что?string?char*?

теперь сами функции выложите и распишите)
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 16:07  [ТС] 15
Цитата Сообщение от dzrkot Посмотреть сообщение
а vstr1 это что?string?char*?

теперь сами функции выложите и распишите)

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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
 
using namespace std;
 
 ofstream notunic("D:\\notunic.csv");
 //ofstream unic("D:\\unic.csv");
 
bool readStr(ifstream& fin, vector <string>& vstr)
{
    string temp;
 
    for (int i = 0; i < 4; ++i)
    {
        getline(fin, temp, ';');
        if (fin)
            vstr.push_back(temp);
        else
            return false;
    }
 
    for (int i = 0; i < 2; ++i)
    {
        getline(fin, temp, ';');
        vstr.push_back(temp);
    }
    getline(fin, temp);
    vstr.push_back(temp);
 
    return true;
}
 
void printNewStr(vector <string>& vstr1, vector <string>& vstr2)
{
 
/*cout       << vstr1[0] << ';' << vstr2[0] << ';'
         << vstr1[1] << ';' << vstr2[1] << ';'
         << vstr1[2] << ';' << vstr2[2] << ';'
         << vstr1[3] << ';' << vstr2[3] << ';'
         << vstr1[4] << ';' << vstr1[5] << ';'
         << vstr1[6] << ';' << vstr2[6] << endl;   */
 
 
 
notunic  << vstr1[0] << ';' << vstr1[1] << ';'
         << vstr1[2] << ';' << vstr1[3] << ';'
         << vstr1[4] << ';' << vstr1[5] << ';'
         << vstr1[6] << ';' <<'\t'<<';'<< vstr2[0] << ';'
         << vstr2[1] << ';' << vstr2[2] << ';'
         << vstr2[3] << ';' << vstr2[4] << ';'
         << vstr2[5] << ';' << vstr2[6] << endl;
 
}
 
 
 
 
int main()
{
 
    ifstream fin1("D:\\1.csv");
    ifstream fin2("D:\\2.csv");
 
 
    if (!fin1 || !fin2)
    {
 
        cout << "Error!File patch - 'D:\\' " << endl;
        cout << "File name - '1.csv' '2.csv' " << endl;
        system("pause");
        return 0;
    }
 
    vector <string> vstr1;
    vector <string> vstr2;
 
 
 
 
    cout<<"Processing";
 
    while (readStr(fin1, vstr1))
    {
        while (readStr(fin2, vstr2))
        {
 
                if (vstr1[3] == vstr2[3] && vstr1[4] == vstr2[4] && vstr1[5] == vstr2[5] )
            {
 
               printNewStr(vstr1, vstr2);
                    cout<<'.';
                vstr2.clear();
            }
 
            else
            {
                vstr2.clear();
                continue;
            }
               }
        fin2.clear();
        fin2.seekg(0);
        vstr1.clear();
 
   }
cout<<'\n';
cout<<"Done.";
cout<<'\n';
     notunic.close();
    //unic.close();
    system("pause");
    return 0;
}



Вот весь код,по поводу росписи ,давайте это перенесем на вечернее время,сейчас есть чем заняться.
И по поводу книги,я так понял там много изданий,стоит начинать с первого издания?
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 16:13 16
Цитата Сообщение от ebywku Посмотреть сообщение
И по поводу книги,я так понял там много изданий,стоит начинать с первого издания?
нет, с последнего) издания есть обновления, можете конечно и на 95 винде работать и на DOS =)

ну судя по коду, тут всё сУрьёзно)
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 16:21  [ТС] 17
Цитата Сообщение от dzrkot Посмотреть сообщение
нет, с последнего) издания есть обновления, можете конечно и на 95 винде работать и на DOS =)

ну судя по коду, тут всё сУрьёзно)

С книгой понял,спасибо большое.
А вот по поводу вашего сарказма,он не очень уместен ,я не программист что б писать супер коды,есть хороший человек которой мне помог с парсингом и правильным выводом,я пытаюсь довести до моих нужд.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
24.12.2014, 16:23 18
на вскидку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// эта функция прочитает из fin в vstr
void read_strings(ifstream& fin, vector <string>& vstr)
    {
    string temp;
    while(fin.good())
        {
        getline(fin,temp,';');
        vstr.push_back(temp); 
        }
    }
// эта функция сравнит все string между собой и запишет повторяющиеся в файл
void compare_and_write_strings(vector <string>& vstr1, vector <string>& vstr2)
    {
    for(vector <string>::iterator it=vstr2.begin(); it!= vstr2.end();it++)
        for(vector <string>::iterator it2=vstr1.begin();it2!= vstr1.end();it2++)
            if(*it == *it2)
                notunic<<*it<<';'
    }
Добавлено через 1 минуту
Цитата Сообщение от ebywku Посмотреть сообщение
я не программист что б писать супер коды
я тоже не программист) Просто вы сначала попытайтесь разобраться самостоятельно, я знаю о чём говорю. Я учился сам, по книгам, после универа, меня никто не учил)
0
ebywku
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 58
24.12.2014, 16:37  [ТС] 19
Цитата Сообщение от dzrkot Посмотреть сообщение
// эта функция прочитает из fin в vstr

// эта функция сравнит все string между собой и запишет повторяющиеся в файл
я сам бы с удовольствием разобрался,но времени нет,а задача поставлена вот и черпаю инфу тут на форуме.

по поводу функции read_strings за нее спасибо,а вот compare_and_write_strings делает немного не то,и я не совсем ее понимаю.
Есть массив в виде табличных данных, как его поделить на отдельные элементы для дальнейшей работы? - вот тема,именно там мне помогли с кодом ,который я показывал вам, там есть полное описание программы которая должна быть - это если интересно вам, я добился того чего хотел,но стала новая задача,файлы которые не совпадают записать в отдельный файл - вот именно это составило проблему
0
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
24.12.2014, 17:01 20
Цитата Сообщение от dzrkot Посмотреть сообщение
на вскидку
На вскидку не нужно, ты строки не видел. В конце строки, например, там нет ;, и где твоя read_strings() тогда остановится, при чтении первой строки?. Что там можно упростить - это сразу считать 6 строк.
0
24.12.2014, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2014, 17:01

Работа с файлом
Мне требуется подключить текстовый файл ко всей программе. Прежде поключал...

Работа с файлом
В двумерном массиве подсчитать сумму элементов в каждом столбце и вывести...

Работа с файлом
Здравствуйте. Помогите, пожалуйста, в работе с файлом. Нужно прочитать...


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

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

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