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

Зацикливание при вводе из файла - C++

Восстановить пароль Регистрация
 
Kellerman
 Аватар для Kellerman
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 34
27.05.2013, 21:11     Зацикливание при вводе из файла #1
требуется ввести из файла в вектор данные типа float. программа зацикливается при выводе целой части вещественного числа.
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
#include "stdafx.h"
#include <iostream>
#include <fstream> 
#include <vector>
 
using namespace std;
 
class buff
{
    public:
        vector<float> data;
        void burnFile(istream& file);
        
};
void buff::burnFile(istream& file)
{
    int value;
    int i = 0;
    while (!file.eof())
    {
        file>>value;
        data.push_back(value);
        cout<<data[i]<<" ";
        i++;
    }
 
}
int main ()
{
    setlocale( LC_ALL,"Russian" );
    buff *one = new buff;
    fstream file("file.txt");
    one->burnFile(file);
    
}
в файле данные записаны в каком виде:
Вложения
Тип файла: txt file.txt (599 байт, 3 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
27.05.2013, 21:14     Зацикливание при вводе из файла #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void buff::burnFile(istream& file)
{
    //int value;
    float value;
    int i = 0;
    while (!file.eof())
    {
        file>>value;
        data.push_back(value);
        cout<<data[i]<<" ";
        i++;
    }
 
}
Kellerman
 Аватар для Kellerman
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 34
27.05.2013, 21:16  [ТС]     Зацикливание при вводе из файла #3
спс)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.05.2013, 21:58     Зацикливание при вводе из файла #4
Если в файле, в конце последней строки, стоит символ новой строки (а в выложенном файле так), то чтение нужно так сделать (иначе будет лишнее чтение):
C++
1
2
3
4
5
6
7
8
while (true)
{
     file >> value;
     if (file.eof()) break;
     data.push_back(value);
     cout << data[i] << " ";
     i++;
}

Вернее даже не лишнее чтение (считывания как раз не произойдёт), а лишнее добавление в вектор и вывод того, что было считано в предыдущей итерации.
Yandex
Объявления
27.05.2013, 21:58     Зацикливание при вводе из файла
Ответ Создать тему
Опции темы

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