С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
#1

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

24.07.2012, 20:14. Просмотров 1136. Ответов 11
Метки нет (Все метки)

вот хочу считать последнюю строку из файла такием раком
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];
но не судьба не получается (наверно потому что курсор в самом конце)
так вот как мне считать последнюю строку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2012, 20:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переход на заданную строку (C++):

Разрядить пробелами заданную строку - C++
Дана строка состоящая из элементов. Разрядить пробелами заданную строку. Добавлено через 17 часов 46 минут Всё еще нужна помощь.

Прочитать из файла заданную строку - C++
Немного запутался, если у меня есть в файле: abc def ghi Как мне засунуть в массив именно третью строчку?

Замена символа пробела на заданную строку - C++
здрасти, со строками у меня как то плохо все, как заменить все символы пробелов на строку &quot; !##! &quot;? int main() { char probel = '...

Строки. Уменьшить заданную строку на К символов - C++
Помогите пожалуйста! Нужно написать программу с функцией, уменьшающей заданную строку на К символов , где К меньше или равно длине строки.

Преобразовать к верхнему регистру заданную строку - C++
Всем доброго времени суток. все сделал, работает. Но есть одно но... Подскажите пожалуйста как сделать что бы переводило к верхнему...

Работа с файлами: получить заданную строку - C++
Даны текстовый файл, строка s. Получить все строки файла f, содержащие в качестве фрагмента строку s. Не надо злоупотреблять Caps Lock!...

11
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 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;
 
}
1
Avazart
Эксперт С++
7238 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,156
Записей в блоге: 17
24.07.2012, 20:27 #3
Цитата Сообщение от НубаС++ Посмотреть сообщение
так вот как мне считать последнюю строку?
Никак, нужно для начала прочитать весь файл полностью.
1
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 20:58  [ТС] #4
Вашим способом не получается почему то, тоесть получается, он выводит на экран последнюю строку НО почему то затем уже программа начинает косячить, те не записывает в файл
0
Avazart
Эксперт С++
7238 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,156
Записей в блоге: 17
24.07.2012, 21:06 #5
Так ты разберись сначала что тебе надо записывать или читать файл?
0
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 21:17  [ТС] #6
и то и то у меня ios_base::in|ios_base::out
0
Avazart
Эксперт С++
7238 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,156
Записей в блоге: 17
24.07.2012, 21:30 #7
И то и то не канает.

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

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

Конкретно опиши что нужно- тогда легче будет объяснить.
0
НубаС++
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();
0
Avazart
Эксперт С++
7238 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,156
Записей в блоге: 17
24.07.2012, 21:56 #9
1. Открываем файл для чтения
2. Читаем указанным способом строку.
3. Закрываем файл и открываем заного, но только для "записи в конец", дописываем строку
4. Закрываем файл.

seekp- не юзаем так как он для бинарных файов.
1
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
24.07.2012, 21:57  [ТС] #10
все решилось одной строкой str.clear();
но + дал за поптытку помочь, я это очень ценю
ах да. проблема решена
0
Avazart
Эксперт С++
7238 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,156
Записей в блоге: 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();
      } 
}
1
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
25.07.2012, 10:26  [ТС] #12
спасибо
0
25.07.2012, 10:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2012, 10:26
Привет! Вот еще темы с ответами:

Заменить заданную строку матрицы а на вектор b - C++
Дана 4х4 , вектор b размерностью 4. Заменить заданную строку матрицы а на вектор b. Номер строки матрицы а вводить с клавиатуры. Матрицу...

Заданную строку перевести в массив из слов - C++
Всем привет, вот дан string предложение, нужно все это перевести в массив из слов . Что можно сделать?

Функция: замена подстроки в строке на заданную строку - C++
Помогите пожалуйста с данной задачей: Реализовать на языке C функцию замены подстроки в строке на заданную строку.

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


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

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

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