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

При построчном чтении файла eof наступает раньше срока - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ требала с екстерналами http://www.cyberforum.ru/cpp-beginners/thread256954.html
Всем не хворать! Пишу класс, чтото типа стринг. хедер: #pragma once class Cue { int size, step, curInd; char* Str; void newMem(); void terminate();
C++ не работает прога прога работает она запускается,появляется окно,но сразу же отключается.. Дана матрица состоящая из N,M вещественных элементов. 1.Найти максимальный элемент 2.Вычислить средееарифметическое отрицательных элементов массива #include "stdafx.h" #include <iostream> #include "stdafx.h" #include"math.h" using namespace std; int main() http://www.cyberforum.ru/cpp-beginners/thread256934.html
Подсчитайте количество цифр, которые содержатся в строке C++
Дана строка S. Подсчитайте количество цифр, которые в ней содержатся. Чтение и вывод входных данных с помощью файлов.
не хочет работать код(((( C++
#include <iostream.h> #include <fstream.h> #include <limits.h> #include <locale.h> #include <stdlib.h> #include <string.h> ....... {
C++ у нас есть число.МЫ не знаем его длины.Как обратиться к первому элементу?? http://www.cyberforum.ru/cpp-beginners/thread256923.html
В общем тема такая " у нас есть число.МЫ не знаем его длины.Как обратиться к первому элементу?? "
C++ деревья Здраствуйте! Задача про деревья такого рода: Программа у пользователя запрашивает узлы дерева в порядке прямого обхода (с использованием терминов «корень», «количество сыновей», «i-ый сын j- того узла»). Мой текущий план таков: 1) Написать класс TreeItem. В нём будет собственно ссылка на предка TreeItem*, ссылка на массив child и индекс(index) по которому можно к нему обратиться.... подробнее

Показать сообщение отдельно
Haster
инженер-системотехник
 Аватар для Haster
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
14.03.2011, 10:30     При построчном чтении файла eof наступает раньше срока
Здравствуйте, товарищи!

Столкнулся с такой проблемой:
при построчном потоковом чтении файла (при помощи getline) бит eof устанавливается раньше,
чем положено (считывается меньше половины файла).
При детальном изучении вопроса выяснил, что все ломается после попытки считывания строки,
содержащей символ с кодом 0x1.
Получается, что eof выставляется при наличие таких символов? Как можно оботи эту проблему?

Ниже привожу код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
    std::ifstream file; 
    file.open("log.txt");
    if (!file) throw FileException();
    while (!file.eof())
    {
        file.getline(temp,sizeof(temp));
        log.push_back(temp);
        if (file.eof())
        {
            std::cout<<"eof ="<<file.rdstate()<<'\n';
            std::cout<<"eof ="<<i<<'\n';
            std::cout<<temp;
        }
        i++;
    }
         ...
Выводит следующее:
C++
1
2
3
4
eof =1
eof =11535
MSG          [49414/02]   ToDo/High        10:12:38.122   ..\Apps\Module_GCA\SsM
anager\SSM_func.c  00425  ss_ussdreq_params.ussd_Data[13] Hex[1a] Char[
В файле данная строка имеет следующий вид:
C++
1
MSG          [49414/02]   ToDo/High        10:12:38.123   ..\Apps\Module_GCA\SsManager\SSM_func.c  02663  PUSR command_data.gstk_address_string.ussd_string.text[12] Hex[1] Char[]
Заранее спасибо за ответы!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru