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

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

Войти
Регистрация
Восстановить пароль
 
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
#1

Не могу ввести в файл строку во время чтения, указатель позиции в файле - C++

21.12.2013, 21:30. Просмотров 278. Ответов 9
Метки нет (Все метки)

читаю из файла данные в структуру, и сравниваю их с str и str2, при совпадении надо будет добавить другую структуру в файл. Решил сделать так - читаю строки в файле, при совпадении в if() записываю текущую строку в string, а на её место добавляю другую - заданную с клавы(в данном куске кода я её не выкладывал дабы не загоромождать), после чего последовательно сохраняю строку и на её место пишу предыдущую...

считываю до места нормально, потом пытаюсь записать что-либо в файл, но не получается...не очень понимаю как правильно сделать это всё с помощью указателей позиции в файле, но знаний не хватает...точнее tellg() и tellp() ведут себя не очень понятно...Вообщем прошу помочь знающих людей...

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
void addWatch(watch**a,int counter)
{
string str;
string str2;
 
fstream in2("file2.txt");
 
cout<<"Please enter company name: ";
cin>>str;
cout<<"Please enter company nation: ";
cin>>str2;
 
bool flag=true;
int i=0;
    while (!in2.eof())
    {
    watch *b=new watch;
        getline(in2,b->name,' ');
        getline(in2,b->company,' ');
        getline(in2,b->nation,' ');
        getline(in2,b->old,' ');
        getline(in2,b->price,'\n');
 
        if (!strcmp(str.c_str(),b->company.c_str())&&!strcmp(str2.c_str(),b->nation.c_str()))
        {
        in2<<"TEST  TEST    TEST    TEST    TEST\n";    // вот здесь как-то надо что-то сделать 
        break;
        }
    i++;
    delete b;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 21:30     Не могу ввести в файл строку во время чтения, указатель позиции в файле
Посмотрите здесь:
При работе fstream указатель типа pos_type (позиции в файле) не работает C++
Ввод-вывод: Не могу ввести строку в std::string! C++
Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) C++
C++ Не могу понять, как правильно передать указатель на объект в файл
Выводить текущее время в определенные позиции консоли во время работы C++
Найти в файле самую длинную строку и переписать её в другой файл C++
Удалить последнюю строку в файле (или сохранить файл без них) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
21.12.2013, 21:34  [ТС]     Не могу ввести в файл строку во время чтения, указатель позиции в файле #2
прикрепляю всю прогу
Вложения
Тип файла: rar freeNatalSol.rar (208.4 Кб, 3 просмотров)
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.12.2013, 21:50     Не могу ввести в файл строку во время чтения, указатель позиции в файле #3
Со string в полях структуры, а значит и с текстовыми методами записи полей структуры в файл, замена структуры в файле не получится.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
21.12.2013, 22:01  [ТС]     Не могу ввести в файл строку во время чтения, указатель позиции в файле #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Со string в полях структуры, а значит и с текстовыми методами записи полей структуры в файл, замена структуры в файле не получится.
я считываю в структуру только в начале, чтобы найти нужную строку по 2 введённым параметрам, а дальше я могу спокойно читать/записывать по строкам, разве нет..
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.12.2013, 22:15     Не могу ввести в файл строку во время чтения, указатель позиции в файле #5
Цитата Сообщение от dzrkot Посмотреть сообщение
а дальше я могу спокойно читать/записывать по строкам, разве нет..
Читать - да. А записывать... Если только новая строка будет совпадать по длине с той, которую хотите переписать. В файле же строк, как это выглядит в блокноте, нет, есть непрерывный ряд кодов символов. Перезапись в файле была бы возможна, если, вместо string, полями были бы массивы char. Тогда можно было бы использовать бинарную запись/чтение, и перезаписывать стукрутры в файле (размер структур - фиксированный).
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
21.12.2013, 22:24  [ТС]     Не могу ввести в файл строку во время чтения, указатель позиции в файле #6
если я всё считаю из файла во временный массив структур, зная номер строки после которой нужно добавить новую структуру - добавлю её, а потом перепишу всё это обратно в файл
по идее прокатит, но переписывать так лень..(
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.12.2013, 22:44     Не могу ввести в файл строку во время чтения, указатель позиции в файле #7
Цитата Сообщение от dzrkot Посмотреть сообщение
но переписывать так лень..(
1) Отказаться от string. 2) Сереализация (может быть). Не занимался, поэтому точно сказать не могу: поможет это здесь или нет.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
21.12.2013, 23:30  [ТС]     Не могу ввести в файл строку во время чтения, указатель позиции в файле #8
...удалить...сам спросил, сам ответил)))

Добавлено через 33 минуты
Да, решил при помощи доп массива...жестоко конечно))
alsav22
21.12.2013, 23:41
  #9

Не по теме:

Цитата Сообщение от dzrkot Посмотреть сообщение
сам спросил, сам ответил)))
А я на что время потратил?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2013, 00:03     Не могу ввести в файл строку во время чтения, указатель позиции в файле
Еще ссылки по теме:
C++ Ввести время и от него отнять системное время
Указатель на строку: как выводить не всю строку целиком, а конкретную букву C++
Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку C++
Измнение позиции в файле C++
C++ Запись и считывание с позиции в файле!

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

Или воспользуйтесь поиском по форуму:
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
22.12.2013, 00:03  [ТС]     Не могу ввести в файл строку во время чтения, указатель позиции в файле #10
Цитата Сообщение от alsav22 Посмотреть сообщение

Не по теме:


А я на что время потратил?

Не по теме:

Да не...)) я в том смысле, что я там задал вопрос, потом через минуту сообразил что я знаю ответ, и написал что "сам спросил сам ответил)"



фуф, задачу решил наконец)))
Yandex
Объявления
22.12.2013, 00:03     Не могу ввести в файл строку во время чтения, указатель позиции в файле
Ответ Создать тему
Опции темы

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