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

Переход на заданную строку - C++

Восстановить пароль Регистрация
 
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 20:14     Переход на заданную строку #1
вот хочу считать последнюю строку из файла такием раком
C++
1
2
3
4
5
6
7
8
9
10
11
    fstream str("base.txt",ios_base::in|ios_base::out);
 
    str.seekp(0, ios::end);   
    
    char* words[10];
    str >> words[0];
    str >> words[1];
    str >> words[2];
    cout << words[0];
    cout << words[1];
    cout << words[2];
но не судьба не получается (наверно потому что курсор в самом конце)
так вот как мне считать последнюю строку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.07.2012, 20:27     Переход на заданную строку #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <fstream>
#include <string>
 
int main()
{
    std::ifstream file("input.txt");    
    std::string str;
 
    while (std::getline(file, str))
        ;
 
    std::cout << str;
 
}
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
24.07.2012, 20:27     Переход на заданную строку #3
Цитата Сообщение от НубаС++ Посмотреть сообщение
так вот как мне считать последнюю строку?
Никак, нужно для начала прочитать весь файл полностью.
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 20:58  [ТС]     Переход на заданную строку #4
Вашим способом не получается почему то, тоесть получается, он выводит на экран последнюю строку НО почему то затем уже программа начинает косячить, те не записывает в файл
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
24.07.2012, 21:06     Переход на заданную строку #5
Так ты разберись сначала что тебе надо записывать или читать файл?
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 21:17  [ТС]     Переход на заданную строку #6
и то и то у меня ios_base::in|ios_base::out
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
24.07.2012, 21:30     Переход на заданную строку #7
И то и то не канает.

Т.е канает но не без костылей в плане перемещния курсоров.

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

Конкретно опиши что нужно- тогда легче будет объяснить.
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 21:41  [ТС]     Переход на заданную строку #8
Оk. Вот алгоритм:
Открываем файл
Считываем последнюю строку
Выводим ее на экран
Дописываем новыую строку (в конец)

Все.

Вот мои соображение по этому поводу, но они не работают
P.S. Работает или одно или другое. (Взависимости от того, что в коде стоит первее)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fstream str;
    
   
   str.open("base.txt",ios_base::in|ios_base::out);   
    int a = ios::end;
    str.seekp(0, ios::end);   
    str.seekp(a - 1);
    std::string stroka;
    while (std::getline(str, stroka));
    std::cout << stroka;
    str.close();
    
    str.open ("base.txt", ios_base::in|ios_base::out);
    str.seekp(0, ios::end);   
            char dateStr [9];
            _strdate( dateStr);
   str << endl << dateStr << " - " << pokaz;
   str.close();
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
24.07.2012, 21:56     Переход на заданную строку #9
1. Открываем файл для чтения
2. Читаем указанным способом строку.
3. Закрываем файл и открываем заного, но только для "записи в конец", дописываем строку
4. Закрываем файл.

seekp- не юзаем так как он для бинарных файов.
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 21:57  [ТС]     Переход на заданную строку #10
все решилось одной строкой str.clear();
но + дал за поптытку помочь, я это очень ценю
ах да. проблема решена
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
24.07.2012, 22:09     Переход на заданную строку #11
C++
1
 str.clear();
Это говорит о том что с потоком что то-не то то есть была ошибка.

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
 
int main()
{
    std::fstream file;    
    std::string str;
    std::string newstr;
    fstream file("base.txt",ios_base::in);
    if(file) 
      {
        while (std::getline(file, str) ) ;
        file.close();
        file.open("base.txt",ios_base::out|ios_base::app);
        file<<newstr;
        file.close();
      } 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2012, 10:26     Переход на заданную строку
Еще ссылки по теме:

определить количество вхождения каждого слова в заданную строку C++
Строки. Уменьшить заданную строку на К символов C++
Переход на новую строку C++

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

Или воспользуйтесь поиском по форуму:
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
25.07.2012, 10:26  [ТС]     Переход на заданную строку #12
спасибо
Yandex
Объявления
25.07.2012, 10:26     Переход на заданную строку
Ответ Создать тему
Опции темы

Текущее время: 00:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru