49 / 4 / 0
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
1

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

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

Author24 — интернет-сервис помощи студентам
в файл нужно записывать информацию , которая хранится после чисел -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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2014, 15:24
Ответы с готовыми решениями:

Задание по Visual c++ 2013, Нужно создать файл, записать в него информацию, а затем по другой кнопке считать информацию из файла
Вот код записи в файл: { UpdateData(TRUE); F.open(L"dat1.txt", std::ios::out); // F -...

Получить определенную информацию из содержимого одного файла и записать её в другой файл
Помогите пожалуйста! Мне необходимо создать для работы bat файл В котором должно быть прописано...

Считать информацию из файла и сохранить в другой файл
Имеется такой код: Var i,jn,j:byte; f,f1 file of char; s,s1:string; Begin...

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

16
272 / 266 / 146
Регистрация: 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
49 / 4 / 0
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
09.06.2014, 17:29  [ТС] 3
проверил на своих файлах, у меня не записывает в другой файл, он все также пустой
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 17:38 4
virtuos553, пути сходятся? Ошибки не выдаёт?
0
49 / 4 / 0
Регистрация: 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
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 18:38 6
virtuos553, LMS_ALL1.unv - это ваш файл с которого надо считать?
Расширение *.unv не позволит этого сделать, если он открывается текстовиком, то вначале придётся
изменить расширение с *.unv в *.txt, выполнить операции и снова поменять расширение
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
09.06.2014, 18:40 7
Цитата Сообщение от GuGo1991 Посмотреть сообщение
virtuos553, LMS_ALL1.unv - это ваш файл с которого надо считать?
Расширение *.unv не позволит этого сделать, если он открывается текстовиком, то вначале придётся
изменить расширение с *.unv в *.txt, выполнить операции и снова поменять расширение
Какая разница, какое расширение?
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 19:02 8
Nekto, то есть не важно с какого рвсширения считывать?
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
09.06.2014, 19:20 9
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Nekto, то есть не важно с какого рвсширения считывать?
хоть с .exe
0
272 / 266 / 146
Регистрация: 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
49 / 4 / 0
Регистрация: 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
272 / 266 / 146
Регистрация: 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
49 / 4 / 0
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
10.06.2014, 17:46  [ТС] 13
дело в том , что этот файл очень огромный и хранить все в стринг переменной это не совсем правильно, и очень много места занимает, я пытаюсь как то организовать считывание файла и искать сразу эти -1 -1 55, и старатьсся за один проход файла все записывать
0
272 / 266 / 146
Регистрация: 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
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
10.06.2014, 21:41 15
Цитата Сообщение от GuGo1991 Посмотреть сообщение
virtuos553, у меня лично *.unv не читает.
Еще скажи, что у тебя скрыты расширения файлов и ты думаешь, что блокнотом можно только тхт файл открыть.
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
10.06.2014, 22:23 16
Nekto, у вас какие-то проблемы? Я вас чем-то задел или как? Если вы уж такой придирчивый объясню
доходчивей:
C++
1
std::ifstream ifs("file.unv");
Выше указанная конструкция у меня не читает файл с подобным расширением (и я не жалуюсь).
И не будем начинать и тем более продолжать бессмысленные диалоги, тема не для этого создавалась.
0
Заблокирован
11.06.2014, 08:00 17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    ifstream init("C:\\1.txt", ios::in);
    init.unsetf(ios_base::skipws);
    ofstream result("C:\\result.txt", ios::out);
    if (init && result) {
        string templ = "-1\n-1\n55\n";
        char buf[templ.size()];
        ostream_iterator<char> out(result);
        istream_iterator<char> start(init);
        while (init.good()) {
            if (*start != '-')*out = *start++;
            else {
                int i = 0;
                do buf[i++] = *start++; while (i < templ.size() && init.good());
                if (templ.compare(string(buf, i))) std::copy(buf, &buf[i], out);
            };
        };
    };
Добавлено через 3 минуты
2 var -regex
0
11.06.2014, 08:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2014, 08:00
Помогаю со студенческими работами здесь

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

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

Как перенести всю информацию на другой движок?
Есть сайт http://interkino.ru Мне сказали что там уже устаревший движок и его уже никто не...

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

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

Дан файл целых чисел. Записать в другой файл те элементы исходного файла, у которых ровно три четных делителя
Помогите найти ошибку, пожалуйста. Если ввести числа 2,4 и 8, выводит 4. А если ввести 8 и 18, то...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru