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

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

Войти
Регистрация
Восстановить пароль
 
 
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
#1

Записать всю информацию из файла в другой файл - C++

09.06.2014, 15:24. Просмотров 628. Ответов 16
Метки нет (Все метки)

в файл нужно записывать информацию , которая хранится после чисел -1 -1 55, ниже указан пример информации в файле
-1
-1
55
ufkahfku rhkauhkakhra hu ara

aa raw raw aw

-1
-1
55
wadhal wdh auw
a wd
wa d
ad


-1
-1
3333

aw dad qa wrwa


-1
-1
55
awdawdadad
adawd
aw
da

a
-1
-1
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 15:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записать всю информацию из файла в другой файл (C++):

Из текстового файла переписать информацию в другой текстовый файл - C++
Как это сделать? например в top.txt написано "1" его нужно переписать скажем в top_new.txt .Как это сделать можно?

Удалить ненужную информацию в конце файла, не создавая другой файл - C++
Молжа ли удалить конец файла(удаление ненужной информации в конце файла)? не создавая другой файл. или как нибуть урезать его?

Файл: Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив - C++
Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив

Записать часть файла в другой файл - C++
добрый вечер, мне надо отредактировать часть текста в одном файле и уже отредактированный переписать в другой файл вот что у меня...

Как из файла записать данные в другой файл? - C++
странная задача, но все же надо открыть файл, прочитать и переписать их в другой файл посторочно... кто знает си++ думаю простая...

Записать из файла в другой файл числа, кратные 3 - C++
Дан файл,содержащий случайные целые числа.Записать из него в другой файл числа кратные 3. #include<stdio.h> #include<conio.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 16:53 #2
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
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
 
int main()
{
    std::string str, temp;
    int index = 0;
    std::ifstream ifs("myFile.txt");
    std::ofstream ofs("output.txt");
    if(ifs)
    {
        while(getline(ifs, str)) { temp += str; }
        ifs.close();
        str = temp;
        temp.clear();
        if(ofs)
        {
            while(str[index])
            {
                if(str[index] == '-' && str.substr(index, 6) == "-1-155")
                {
                    index += 6;
                    while(str[index] != '-')
                    {
                        temp += str[index];
                        index++;
                    }
                    ofs << temp << std::endl;
                    temp.clear();
                    index--;
                }
                index++;
            }
            ofs.close();
        }
        else
            perror("Error");
    }
    else
        perror("Error");
    
    std::cout << "\nOperation succeeded\n";
    getch();  
    return 0;
}
0
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
09.06.2014, 17:29  [ТС] #3
проверил на своих файлах, у меня не записывает в другой файл, он все также пустой
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 17:38 #4
virtuos553, пути сходятся? Ошибки не выдаёт?
0
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
09.06.2014, 18:25  [ТС] #5
какие пути? нет , ошибок вообще нету, просто пустой файл

P.S. посмотрите мой вариант этой проги, но там минусов много очень

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
void func1 ()
 
{
 
    double n;
    double FREQUENCY;
    double Modedouble2;
    
    char c;
    string temp;
    string temp1;
    string temp2;
    string temp3;
    string temp4;
    
    ifstream fread("C:\\project\\LMS_ALL1.unv");
 
 
    vector<double> vectormode;
    if (fread)
    {ofstream fwrite("C:\\project\\test666.txt"); 
        while(!fread.eof())
        {
 
    label1: fread >> temp;
    
 
        if (temp == "-1")
 
        {
            fread >> temp1 >> temp2;
 
            if ((temp1 == "-1") && (temp == "-1") && (temp2 == "55"))
            {
                /*while ((fread >> temp4) && (temp4 != "FREQUENCY"));
                if (temp4 == "FREQUENCY")
                {
                    fread >> FREQUENCY;
                    fwrite << FREQUENCY << " ";
                    vectormode.push_back(FREQUENCY);
                    /*while ((input >> teemp) && (teemp != "Hz)"))
                    output << teemp << " ";
                    if (teemp == "Hz)")
                    output << teemp << "\n";
                    output << "\n";
                } */
                
            label:
                fread >> temp;
 
                if (temp == "\n")
                    fwrite << "\n";
                fwrite << temp << " ";
                if (temp == "-1")
                {
                    fread >> temp1;
                    if (temp1 == "-1")
                    {
                        fread >> temp2;
                        if (temp2 == "55")
                        {
                            fwrite << "\n" << "\n";
                            goto label;
 
                        }
                    /*  if(temp2=="EOF")
                        {
                            break;
                        }*/
 
                        else
                            goto label1;
 
                    }
                }
                else
                    goto label;
 
                    
 
                
 
            }
 
        }}
        fread.close();
        fwrite.close();
 
    }
    
    cout<<"DONE"<<"\n";
    }
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 18:38 #6
virtuos553, LMS_ALL1.unv - это ваш файл с которого надо считать?
Расширение *.unv не позволит этого сделать, если он открывается текстовиком, то вначале придётся
изменить расширение с *.unv в *.txt, выполнить операции и снова поменять расширение
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
09.06.2014, 18:40 #7
Цитата Сообщение от GuGo1991 Посмотреть сообщение
virtuos553, LMS_ALL1.unv - это ваш файл с которого надо считать?
Расширение *.unv не позволит этого сделать, если он открывается текстовиком, то вначале придётся
изменить расширение с *.unv в *.txt, выполнить операции и снова поменять расширение
Какая разница, какое расширение?
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 19:02 #8
Nekto, то есть не важно с какого рвсширения считывать?
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
09.06.2014, 19:20 #9
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Nekto, то есть не важно с какого рвсширения считывать?
хоть с .exe
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 19:23 #10
Nekto, впервые такое слышу.
virtuos553, должно работать:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
 
int main()
{
    std::string str, temp, filename;
    int index = 0;
    
    char file[] = "myFile.unv"; // C:\\project\\LMS_ALL1.unv
    filename = file;
    filename = filename.substr(0, filename.find_last_of('.') + 1) + "txt";
    
    char* new_name = new char[filename.size() + 1];
    strcpy(new_name, filename.c_str());
    
    rename(file, new_name); //ГЊГҐГ*ГїГҐГ¬ Г°Г*ñøèðåГ*ГЁГҐ
 
    std::ifstream ifs(new_name);
    std::ofstream ofs("output.txt"); // C:\\project\\test666.txt
    if(ifs)
    {
        while(getline(ifs, str)) { temp += str + " "; }
        ifs.close();
        str = temp;
        temp.clear();
        if(ofs)
        {
            while(str[index])
            {
                if(str[index] == '-' && str.substr(index, 8) == "-1 -1 55")
                {
                    index += 8;
                    while(str[index] != '-')
                    {
                        temp += str[index];
                        index++;
                    }
                    index--;
                    ofs << temp << std::endl;
                    temp.clear();
                }
                index++;
            }
            ofs.close();
        }
        else
            perror("Error");
    }
    else
        perror("Error");
    
    rename(new_name, file); //ГЊГҐГ*ГїГҐГ¬ Г°Г*ñøèðåГ*ГЁГҐ îáðГ*ГІГ*Г®
    
    delete [] new_name;
    
    std::cout << "\nOperation succeeded\n";
    getch();  
    return 0;
}
0
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
10.06.2014, 13:56  [ТС] #11
я скидывал свой пример выше, studio спокойно читает unv напрямую, это же универсальный формат

Добавлено через 5 минут
strcpy(new_name, filename.c_str());

Он ругается на вот эту строку, код ошибки

Ошибка 1 error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\артемий\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\исходный код.cpp 16 1 ConsoleApplication1



P.S.


Мне нужно впринципе лишь пример как находить вот эти сообщения -1 -1 55 и записывать инфу хранящуюся там в файл, либо до след -1 -1 55 и тогда дальше продолжать опять записывать, или до -1 -1 и дальше любое число
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
10.06.2014, 15:20 #12
virtuos553, у меня лично *.unv не читает.
Цитата Сообщение от virtuos553 Посмотреть сообщение
Он ругается на вот эту строку, код ошибки
В настройках можно скинуть эту проблему.
Цитата Сообщение от virtuos553 Посмотреть сообщение
Мне нужно впринципе лишь пример как находить вот эти сообщения -1 -1 55 и записывать инфу хранящуюся там в файл, либо до след -1 -1 55 и тогда дальше продолжать опять записывать, или до -1 -1 и дальше любое число
Я делал следующим образом. Сначала всё из файла записал в переменную str. Далее в цикле while
C++
1
if(str[index] == '-' && str.substr(index, 6) == "-1-155")
находим первый элемент '-' и если 5 следующих элементов составляют -1-155, все последующие элементы
сохраняются в temp до элемента '-'.
Во втором примере всё то же самое, только учитываются ещё и пробелы (-1 -1 55).
У меня работает, иначе бы не выкладывал. Попробуйте протестировать с текстовиками.
0
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
10.06.2014, 17:46  [ТС] #13
дело в том , что этот файл очень огромный и хранить все в стринг переменной это не совсем правильно, и очень много места занимает, я пытаюсь как то организовать считывание файла и искать сразу эти -1 -1 55, и старатьсся за один проход файла все записывать
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
10.06.2014, 18:48 #14
virtuos553, ясно.
Вот так будет добавлять по "кускам":
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
#include <iostream>
#include <string>
#include <fstream>
#include <conio.h>
 
int main()
{
    std::string str, temp;
    int index = 0;
    std::ifstream ifs("myFile.txt");
    std::ofstream ofs("output.txt", std::ios_base::app);
    if(ifs)
    {
        while(!ifs.eof())
        {
            getline(ifs, temp);
            str += temp;
            if(str.size() >= 6 && str.substr(str.size() - 6) == "-1-155")
            {
                str.clear();
                temp.clear();
                if(ofs)
                {
                    while(temp != "-1")
                    {
                        ofs << temp << std::endl;
                        getline(ifs, temp);
                    }
                }
                else
                    perror("Error");
                str += temp;
            }
        }
        ifs.close();
        ofs.close();
    }
    else
        perror("Error");
    
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
10.06.2014, 21:41 #15
Цитата Сообщение от GuGo1991 Посмотреть сообщение
virtuos553, у меня лично *.unv не читает.
Еще скажи, что у тебя скрыты расширения файлов и ты думаешь, что блокнотом можно только тхт файл открыть.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2014, 21:41
Привет! Вот еще темы с ответами:

Считать массив из файла, записать результаты в другой файл - C++
Программа рабочая, нужно переделать, так чтобы массив считывался из файла и сумма со средним арифметическим выводилась, и на экран, и в...

Прочитать данные из xlsx файла и записать в другой файл - C++
Всем бодрой пятнички!:) Соскучилась я за вами, потому обращаюсь с вопросом.:gwink: Всегда была слаба в теме работы с файлами. А тут...

Считать строки из файла, изменить и записать в другой файл - C++
Добрый день. Есть входящий файл: Лицевой счёт 1010047078 показания счётчика (9243) 1010029116 6036 Ао НЭСК 1010004047 167490 ...

Открыть файл, имя которого задается с клавиатуры. Посчитать количество байт в этом файле. Первую половину прочитанного файла записать в другой файл. - C++
ребят помогите! плиз!!1. Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество байт в этом файле....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.06.2014, 21:41
Ответ Создать тему
Опции темы

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