Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
1

перенос курсора

25.06.2013, 13:17. Показов 3062. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
fstream ifile;
string s;
ifile.open(NameFile, :: ios::in);
int cur = ifile.tellp();  
ifile.seekp(cur ,ios::beg); 
ifile >>s;
вот незамысловатый кусочек кода, проблема в том что seekp или tell работает "не совсем правильно " так как например из за переноса в текущую позицию , то- есть перенос по сути не происходит а на деле указатель улетает вперёд байт на 50. что делать?

Добавлено через 10 минут
с маленьким файлом таких проблем нет

Добавлено через 5 минут
файл в котором я хочу переместить указатель весит порядка 10 мб
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2013, 13:17
Ответы с готовыми решениями:

Перенос курсора мыши.
Товарищи программисты как перенести курсор мыши в заданную позицию на экране? Помогите пожалуйста!

Перенос текстового курсора
Здравствуйте. Имеется следующая программа (заменяет все чётные элементы вектора на x): #include...

Перенос курсора по файлу (fstream)
Добрый вечер. Есть текстовый файл. В нем есть строки. Вопрос: как передвинуть курсор из текущего...

Перенос курсора
И снова Здраствуйте! Добавлено через 1 минуту Есть такой вопрос. Как можно перенести курсор...

12
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 13:33 2
Непонятно о чём речь. В приведённом коде, курсор, после открытся файла, находится в начале, поэтому tellp() (почему не tellg() ?) выдаст 0. Потом, относительно начала, курсор передвигается на 0 байтов.
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
25.06.2013, 13:40  [ТС] 3
Цитата Сообщение от alsav22 Посмотреть сообщение
почему не tellg() ?
я так и не понял в чём проявляется разница между tellg и tellp
Цитата Сообщение от alsav22 Посмотреть сообщение
поэтому tellp() (почему не tellg() ?) выдаст 0.
Цитата Сообщение от Van111 Посмотреть сообщение
вот незамысловатый кусочек кода
(то есть вырезка я просто добавил первые три строки для точности)
Цитата Сообщение от alsav22 Посмотреть сообщение
отом, относительно начала, курсор передвигается на 0 байтов.
в том то и дело что передвигается этак байтов на 50
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 13:50 4
Цитата Сообщение от Van111 Посмотреть сообщение
я так и не понял в чём проявляется разница между tellg и tellp
telg() для чтения (seekg() тоже).

Добавлено через 1 минуту
Цитата Сообщение от Van111 Посмотреть сообщение
в том то и дело что передвигается этак байтов на 50
Откуда видите?
Вот так передвинет относительно начала на 3, потом относительно текущего положения на 3:
C++
1
2
3
4
5
6
7
8
9
10
fstream ifile;
    string s;
    ifile.open(NameFile, ios::in, ios::binary);
    int cur = 3;  
    ifile.seekg(cur, ios::beg);
    ifile >> s;
    cout << s << endl;
    ifile.seekg(cur, ios::cur);
    ifile >> s;
    cout << s << endl;
Добавлено через 4 минуты
Цитата Сообщение от Van111 Посмотреть сообщение
(то есть вырезка я просто добавил первые три строки для точности)
Покажите не вырезку, иначе не понять, почему у вас курсор так себя ведёт.

Добавлено через 2 минуты
Цитата Сообщение от Van111 Посмотреть сообщение
так как например из за переноса в текущую позицию , то- есть перенос по сути не происходит
Если нужно в теущую позицию, то:
C++
1
ifile.seekg(0, ios::cur);
2
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
25.06.2013, 13:56  [ТС] 5
Цитата Сообщение от alsav22 Посмотреть сообщение
Откуда видите?
считываемый файл просматриваю
Цитата Сообщение от alsav22 Посмотреть сообщение
Покажите не вырезку, иначе не понять, почему у вас курсор так себя ведёт.
уже заменил на другой вариант
@alsav22, вы пробовали запустить свой код на файле размером мегабайт 10 , прочитать половину его, а потом запустить данные функции?

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
ifile.seekg(0, ios::cur);
отрицательные значения вместо нуля подставить можно?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 14:06 6
Цитата Сообщение от Van111 Посмотреть сообщение
отрицательные значения вместо нуля подставить можно?
Можно.
Цитата Сообщение от Van111 Посмотреть сообщение
@alsav22, вы пробовали запустить свой код на файле размером мегабайт 10 , прочитать половину его, а потом запустить данные функции?
Свой файл дайте, попробую. При таком размере, всё должно работать.

Добавлено через 8 минут
Цитата Сообщение от Van111 Посмотреть сообщение
считываемый файл просматриваю
Интересно, как вы в нём ориентируетесь... И что значит: "просматриваю"...
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
25.06.2013, 14:23  [ТС] 7
через notpad
Вложения
Тип файла: rar calla_lily_with_roses.rar (2.49 Мб, 6 просмотров)
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 14:35 8
Цитата Сообщение от alsav22 Посмотреть сообщение
Интересно, как вы в нём ориентируетесь...
Что нужно сделать (или что вы делаете) и как потом это проверить (или как вы проверяете)?
1
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
25.06.2013, 14:53  [ТС] 9
Цитата Сообщение от alsav22 Посмотреть сообщение
Что нужно сделать (или что вы делаете) и как потом это проверить (или как вы проверяете)?
считал до начала полигонов (первая буква f строке)
считал первую строчку, считал символ "f" второй строки, хотел отодвинуть курсор что следующей командой опять считать "f" а в результате получился перескок на 40 - 60 байт
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 15:41 10
Всё работает, только непонятна цель. Вот код и результат на скрине. Делает, то что вы описали (зачем только так делать, непонятно):
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
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
using namespace std;
 
 
int main()
{ 
    char NameFile[26] = "calla_lily_with_roses.obj";
    
    fstream ifile;
    
    ifile.open(NameFile, ios::in | ios::binary);
    if (!ifile.is_open()) cout << "Error!" << endl;
    else
    {
        string temp;
         
        int n = 0;
        while (getline(ifile, temp))
        {
            if (temp[0] == 'f')
            {
                cout << temp << endl;
                char ch = ifile.get();
                cout << ch << endl;
                ifile.seekg(-1, ios::cur);
                getline(ifile, temp);
                cout << temp << endl;
                break;
            }
        }
        ifile.close();
    }
    
    system("pause");
    return 0;
}
Миниатюры
перенос курсора  
2
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 15:45 11
Код ищет первую строку, первый символ которой f. Читает её, потом считывает первый символ следующей строки, потом возвращает курсор на одну позицию назад и читает всю вторую строку.

Добавлено через 2 минуты
Задачу опишите, а то трудно понять, что, собственно, надо.
1
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
25.06.2013, 15:47  [ТС] 12
Цитата Сообщение от alsav22 Посмотреть сообщение
(зачем только так делать, непонятно):
обработка obj файла, выбрал такую архитектуру, потом переделал без перебега курсора. спасибо за ваш труд и помощ
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 15:49 13
Цитата Сообщение от Van111 Посмотреть сообщение
обработка obj файла
Это-то понятно... Непонятно, что у вас с курсором было и почему...
0
25.06.2013, 15:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2013, 15:49
Помогаю со студенческими работами здесь

Перенос Курсора C#
Помогите начинающему программисту 1)Как перенести курсор на определенное место в Консоли? 2)Как...

Перенос курсора в TextBox
Нужно, чтоб по нажатию кнопки курсор переходил на конец TextBox, но не выделял что находится...

Перенос курсора по файлу (QTextStream)
Добрый вечер. Есть текстовый файл. В нем есть строки. Вопрос: как передвинуть курсор из текущего...

Перенос курсора на новую строку в textbox
Всем привет! Столкнулся с такой проблемой - необходимо переносить ввод на следующую строку, как...


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

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