Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
1

Перенос информации в txt

07.02.2021, 21:12. Показов 2968. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
void red_mat() {
    int i=1;
    int variant;
    std::string name, redname, redkol, kol;
    std::ifstream file("all.txt");
    std::cout << "Редактирование информации\n";
    std::cout << "Введите номер материала либо 0 чтобы выйти\n";
    std::cin >> variant;
    if (file.is_open()) {
        std::string line;
        while (std::getline(file, line)) {
            if (variant == i) {
                std::cout << i << "." + line << std::endl;
                std::cout << "Введите новое имя:\n";
                std::cin >> name;
                std::cout << "Введите новое кол-во:\n";
                std::cin >> kol;
                break;
            }
            i++;
        }
        file.close();
    }
    redname += name;
    redkol += kol;
    std::ofstream myfile;
    myfile.open("all.txt");
    myfile << redname + " " + redkol;
    
}
Как сделать чтобы вызывая эту функцию и внося новое имя и количество для материала после сохранения эти данные не стирали все что уже было в файле txt
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2021, 21:12
Ответы с готовыми решениями:

Перенос в .txt
Всем привет, столкнулся с заданием где суть задания перенос в .txt файл а я не понимаю как это сделать подскажите Найти в файле f все...

Перенос информации
Здравствуйте, подскажите как сделать чтобы всю инфу из первого DBGrid перенести во вторую?

Вывод информации в txt файл
Доброго времени суток. Помогите с выводом информации в текстовый документ.Программа считает время простоя установки в формате чч:мм:cc,...

31
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
07.02.2021, 21:28 2
Лучший ответ Сообщение было отмечено Lemon 1123 как решение

Решение

Цитата Сообщение от Lemon 1123 Посмотреть сообщение
Как сделать чтобы вызывая эту функцию и внося новое имя и количество для материала после сохранения эти данные не стирали все что уже было в файле txt
C++
1
2
std::ofstream myfile;
    myfile.open("all.txt", std::ios::out | std::ios::app);
Либо std::ios::ate

Добавлено через 1 минуту
https://en.cppreference.com/w/... e/openmode
1
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
07.02.2021, 23:42  [ТС] 3
созрел другой вопрос а как тогда не читать какую-то строчку?)
судя по всему эта функция должна быть где-то тут,
Цитата Сообщение от Lemon 1123 Посмотреть сообщение
if (variant == i) {
                std::cout << i << "." + line << std::endl;
                std::cout << "Введите новое имя:\n";
                std::cin >> name;
                std::cout << "Введите новое кол-во:\n";
                std::cin >> kol;
                break;
            }
я попробовал trunc но не вышло. Получается что нужно как бы заменить строку
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
07.02.2021, 23:45 4
Цитата Сообщение от Lemon 1123 Посмотреть сообщение
созрел другой вопрос а как тогда не читать какую-то строчку?)
Ну, это другой вопрос. Тот-то решился?
0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
07.02.2021, 23:45  [ТС] 5
Даа
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
07.02.2021, 23:49 6
Цитата Сообщение от Lemon 1123 Посмотреть сообщение
я попробовал trunc но не вышло. Получается что нужно как бы заменить строку
Здесь тебе придётся смотреть содержимое строки - считываешь строку, проверяешь что она соответствует, если нет - пропускаешь
0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
07.02.2021, 23:51  [ТС] 7
oleg-m1973, если нет то пропускаю а если да то удаляю? А как удалить
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
07.02.2021, 23:53 8
Цитата Сообщение от Lemon 1123 Посмотреть сообщение
oleg-m1973, если нет то пропускаю а если да то удаляю? А как удалить
Никак. Из такого файла удалить ничего не получится. Только записать в новый файл.
0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
08.02.2021, 01:03  [ТС] 9
2 часа пыхтел так и не вышло все равно
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.02.2021, 01:09 10
Lemon 1123, как удалить строку из файла: читаете файл, строки которые нужны, записываете в новый файл. потом удалите начальный файл, новый переименуйте и всё.
0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
08.02.2021, 01:14  [ТС] 11
Файл читаю, строки записываю, програму запускаю оно то добавляет просто еще 1 пункт то вобще не то делает
0
08.02.2021, 01:16 12

Не по теме:

Цитата Сообщение от Lemon 1123 Посмотреть сообщение
Файл читаю, строки записываю
показывайте код

0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
08.02.2021, 01:28  [ТС] 13
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
void red_mat() {
    int i=1;
    
    std::string name, redn, redk, kol, variant;
    std::ifstream file("all.txt");
    std::cout << "Редактирование информации\n";
    std::cout << "Введите номер материала либо 0 чтобы выйти\n";
    std::cin >> variant;
    if (file.is_open()) {
        std::string line;
        
            int local_Cnt = 0;
            if (variant == "0") {
                exit(1);
            }
            else {
                std::string finded, replaced;
                finded = variant;
                std::string line;
                std::string name_new;
 
                
                int ext_cnt = 0;
                bool change_name = true;
 
 
                std::ifstream ifs("all.txt");
 
                std::cout << "Введите новое имя и кол-во\n";
                std::cin >> replaced;
                std::getline(std::cin, replaced);
                if (ext_cnt == 0)
                    name_new = replaced;
 
                std::vector<std::string> Vec;
                int cnt = 0;
                if (ifs.is_open()) {
                    std::string tmp;
                    bool name_finded = false;
                    bool again_cnt = false;
                    int cnt = 0;
                    while (std::getline(ifs, tmp)) {
                        //ifs >> tmp;
 
                        if (tmp == finded)
                        {
                            Vec.push_back(tmp);
                            cnt++;
                            continue;
                        }
                        if (cnt == 1)
                        {
                            Vec.push_back(tmp);
                            cnt++;
                            continue;
                        }
                        if (cnt == 2)
                        {
                            tmp = replaced;
                        }
 
                        Vec.push_back(tmp);
                    }
                }
                std::ofstream ofs("all.txt");
 
                for (std::vector<std::string>::const_iterator it = Vec.begin();
                    it != Vec.end(); ++it)
                    ofs << *it << "\n";
                ext_cnt++;
                ofs.close();
                ifs.close();
 
            }
 
    }
 
}
я уже и так и сяк вертел потом впихнул часть с векторами в надежде что заработает и закрыл. Так что первоначальный только вверху
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.02.2021, 01:32 14
Lemon 1123, зачем Вам вектор ? почему не используете режим app ? сформулируйте условие задачи

и приведите пример записи в файле
0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
08.02.2021, 01:41  [ТС] 15
Мне нужно просто чтобы я ввел номер материала (variant) потом новое имя и кол-во для этого материала которое заменит старую информацию. Например есть пункт 1. Гвозди 100 штук. Я ввожу 1 и потом Доски 20 . Вызываю функцию вывода txt и вижу на екране не гвозди а доски
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.02.2021, 01:49 16
Lemon 1123, я правильно Вас понимаю ? в файле all.txt ничего нет. Вы записываете с клавиатуры в файл информацию в виде
// файл all.txt
productA 10
productB 100
productC 5

затем Вы хотите ввести номер строки. например 2, новое название productD 33 и сохранить в файле all.txt
// файл all.txt
productA 10
productD 33
productC 5
0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
08.02.2021, 01:53  [ТС] 17
Да.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.02.2021, 03:39 18
я так понял, что кроме этого Вы хотите добавлять информацию. для простоты пока будем считать, что название товара - одно слово. организовать добавление и замену "на лету", т.е. не создавая массив можно, но если Вам понадобится потом отсортировать данные ? решать лучше через массив структур. в любом случае Вам понадобятся 3 функции:
C++
1
void Record_data () // запись начальных данных
C++
1
void Add_data () // добавление данных
C++
1
void Replace_data () // замена данных
с функцией Add_data() Вам уже подсказали: открываете файл в режиме дозаписи, проще записать так:
C++
1
2
3
ofstream ofs("all.txt", ios::app);
... // дозапись новой строки
ofs.close();
в функции Replace_data() открываете файл сначала для чтения затем для записи:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int i=0;
ifstream ifs("all.txt");
 
while (ifs >> data[i].product >> data[i].quantity) // чтение в массив структур
{        
    i++;
}
 
ifs.close();
 
ofstream ofs("all.txt");
 
for(int j = 0; j < i; j++)
{
    ... // если j=N-1 - меняете строку
    ... // здесь записываете из массива структур в файл
}
ofs.close();
почитайте тему структура, массив структур
0
4 / 3 / 1
Регистрация: 03.06.2020
Сообщений: 82
09.02.2021, 21:04  [ТС] 19
Yetty, Вобщем со структурами все надо переделывать а если начну то еще больше проблем наберу решил долбиться в стенку получилось вывести как надо но как теперь сделать чтобы в функции вывода всего списка all_mat тоже считывался новый список ибо оно выводит в редактировании (red_mat) список до конца и стирает все или не сохраняет а потом когда в меню вызываю опять весь список выводит пустоту
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
void all_mat() {
    int i = 1;
    std::ifstream file("all.txt");
    std::cout << "Все материалы: \n";
    if (file.is_open()) {
        std::string line;
        while (std::getline(file, line)) {
            std::cout << i << "." + line << std::endl;
            i++;
        }
        file.close();
    }
    menu();
}
void menu() {
    while (1) {
        int variant;
        std::cout << "Выберите нужное действие :\n1.Планирование доставки \n2.Добавить новые материалы\n3.Редактировать информацию\n4.Просмотреть все материалы\n5.Выход\n";
        std::cin >> variant;
        if (variant == 1) {
            plan();
        }
        else if (variant == 2) {
            add_mat();
        }
        else if (variant == 3) {
            red_mat();
        }
        else if (variant == 5) {
            exit(1);
        }
        else if (variant == 4) {
            all_mat();
        }
        
        else {
            std::cout << "Неверный вариант!";
        }
    }
}
void red_mat() {
    int i = 0;
    int variant;
    std::string name, kol;
    std::ifstream file("all.txt");
    std::cout << "Редактирование информации\n";
    std::cout << "Введите номер материала либо 0 чтобы выйти\n";
    std::cin >> variant;
    std::string line;
    int k=1;
    if (file.is_open()) {
        
        while (std::getline(file, line)) {
            i++;
            k++;
            if (variant == i) {// если цикл попадает на выбраный номер материала 
                std::cout << "Введите новое имя:\n";
                std::cin >> name;
                std::cout << "Введите кол-во:\n";
                std::cin >> kol;
                std::ofstream myfile("all.txt"); 
                myfile.open("all.txt", std::ios_base::app);
                
                line = name + " " + kol + " "; // не уверен что надо но мне так проще
                myfile << line<< std::endl;// сохранил 
                
                std::cout << i << "." + line << std::endl; // вывел
                i++;
                k = 0;
                myfile.close();
            }
            if (k != 0) { // чтобы не выводилась 2 раза строчка после срабатываения предыдущего if
                std::ofstream myfile("all.txt");
                myfile.open("all.txt", std::ios_base::app); // выводит остальной список с новым измененным пунктом
                myfile << line << std::endl;
                std::cout << i << "." + line << std::endl;
                myfile.close();}
            
        }
        file.close();
    }
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.02.2021, 22:23 20
Цитата Сообщение от Lemon 1123 Посмотреть сообщение
со структурами все надо переделывать
я Вам подсказываю как решаются такие задачи - с помощью структуры - рано или поздно Вам добавят подзадачи которые решить без структур будет сложно. именно сейчас, сообщая
Цитата Сообщение от Lemon 1123 Посмотреть сообщение
не уверен что надо но мне так проще
Вы проходите мимо возможности освоить что-то новое. но это дело Ваше. если будут нужны ссылки на решения простейших задач на структурах, сообщите

теперь что непосредственно касается Вашего вопроса. найдите отличие:
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
std::ofstream myfile;
    myfile.open("all.txt", std::ios::out | std::ios::app);
Цитата Сообщение от Lemon 1123 Посмотреть сообщение
std::ofstream myfile("all.txt");
    myfile.open("all.txt", std::ios_base::app);
ещё лучше использовать сокращённую запись:
C++
1
std::ofstream myfile("all.txt", std::ios::app);
следующий вопрос - зачем Вам режим дозаписи app, если Вы просто меняете строку ?

переименуйте функции, как я предлагал выше - потому что непонятно что Ваша функция "редактирования" должна делать. кроме того использовать транслит ( например red ) не рекомендуется

и вынесите открытие файла из цикла
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.02.2021, 22:23
Помогаю со студенческими работами здесь

Перенос информации из txt. в mysql
К сожалению профан я в работе с бд, по этому надеюсь на помощь. Собственно нужен код для обработки лога входящих смс. Лог имеет следующий...

Перенос информации из DataGridView в txt файл
Столкнулся с необходимостью записи строк DGV в txt файл который уже есть (В нём строки DGV) Разделителем слов является символ ╤ ...

Как сделать перенос из отдного txt файла текста в другой txt файл в Turbo C?
Надо сделать с потоками. fopen fgets fputs - с этими функциями

перенос информации с 1с на сайт и создание каталога на основе информации в БД
Всем доброе утро, у меня есть база на 1с, я перенёс информацию о товарах на сайт, в админке у меня есть пункт с названием &quot;1с...

Перенос данных из .txt
Excel 2019 Попробовал тупо открыть .txt (представляет собой список) в excel. На первый взгляд все норм, каждая строка .txt оказалась в...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH 1. поймать путь через вывод $(pwd) 2. более правильно - на основе realpath (см. скриншот)
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
run.dev 13.03.2025
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка. . .
PHP 8: JIT-компиляция и улучшение производительно­сти
Jason-Webb 13.03.2025
PHP никогда не славился своей скоростью. Многие сталкивались с проблемами производительности при работе со сложными вычислениями или обработкой больших объемов данных. Традиционная модель выполнения. . .
Сериализация данных с Apache Avro в Kafka
Javaican 12.03.2025
Apache Kafka стала одним из ключевых решений для работы с большими потоками данных. Однако с ростом объемов передаваемых данных возникает проблема: как эффективно сериализовать и десериализовать. . .
Создание потребителей Kafka с помощью Reactor Kafka
Javaican 12.03.2025
Reactor Kafka — это библиотека, объединяющая Apache Kafka с реактивным программированием на базе Project Reactor. Такое сочетание позволяет строить неблокирующие, асинхронные приложения с контролем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru