Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ifstream, прочитать float значение 
V
    Опции темы
Vetos
Дата 4.7.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



Здравствуйте!
Имеется текстовый файл:
Код

1
5
6
-1 -1 -1
1 -1 -1
0 1 0
-1 -1 1
1 -1 1
0 0
0,5  <------
0,5  <------
1 0
0 2 1 
0 3 2
3 4 2

Допустим я уже прочитал первые два нуля выше выделенных строк.
Как прочитать выделенные значения в float переменную с помощью открытого ifstream файла file:
Код

ifstream file( FileName );

обычным способом неполучается:
Код

float v;
file >> v;

прога зависает:(
Может их просто надо написать в файле в другом виде?
Спасибо!

Это сообщение отредактировал(а) Vetos - 4.7.2009, 23:44


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Soah
Дата 5.7.2009, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



Цитата(Vetos @  4.7.2009,  23:43 Найти цитируемый пост)
Может их просто надо написать в файле в другом виде?

 smile 

Код

   ofstream out("numbers.ext", ios::binary);

   out << 7.89;
   out.close();

   ifstream in("numbers.ext", ios::binary);

   float v;
   in >> v;
   in.close();

   cout << v;


Input/Output with files
PM MAIL   Вверх
Irdis
Дата 5.7.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.5.2008

Репутация: нет
Всего: 1



.............
PM MAIL   Вверх
586
Дата 5.7.2009, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



Цитата(Vetos @  5.7.2009,  00:43 Найти цитируемый пост)
0,5  <------
0,5  <------

Надо писать через точку, а не через запятую.
PM   Вверх
Vetos
Дата 5.7.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



Цитата(586 @  5.7.2009,  04:55 Найти цитируемый пост)
Надо писать через точку, а не через запятую.

Через точку тоже самое и если даже так 0.5f все равно не работает, даже если просто число поставиьт всеравно прога зависает:(



Soah, спасиба за инфу, попрорбую найти какой нить бинарный редактор. Просто данные в прогу только поступают, а писать отдельно прогу для записи нет желания smile 


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Vetos
Дата 5.7.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



А никто случайно не знает такого редактора, хотябы название, чот немогу найти ничего подходящего.


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Soah
Дата 5.7.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



Цитата(Vetos @  5.7.2009,  09:44 Найти цитируемый пост)
Через точку тоже самое и если даже так 0.5f все равно не работает

работает
numbers.txt
Цитата

77
7.89
99

Код

   ifstream in("numbers.txt");

   int t;
   float v;
   in >> t;
   cout << t << endl;
   in >> v;
   cout <<  v << endl;
   in >> t;
   cout << t;
   in.close();


Цитата(Vetos @  5.7.2009,  09:44 Найти цитируемый пост)
даже если просто число поставиьт всеравно прога зависает:(

показывайте код smile 
PM MAIL   Вверх
Vetos
Дата 6.7.2009, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



Да, и правда работает но пока нашел свою ошибку(опять не ту переменную в цикл поставил), спасибо.
Есть еще другой способ, я думаю будет кому-то полезен:
Текстовый файл:
Код

count 5
3.2 5.6 7.8
2.23 1.32 1.0
4.5 5 6
1 2 3
4 5 6

Код

#include <fstream>

...

char  line[256];                                                   <---Здесь будет храниться строка из файла

int count;                                                            <---Сюда запишем количество строк в файле

float ** Array;                                                     <---Это двумерный динамический массив для хранения данных

ifstream file( "myfile.txt" );

file.getline( (char *)&line , sizeof(char[256]) );   <---Считываем строку с файла в переменную line размеров в 256 char'ов

sscanf ( line , "count %i\n", &count );                 <---Здесь мы делаем перевод из строки в число наше количество строк

Array = new float*[count];                                  <---Выделяем память для строк массива под наши данные

for (int i=0; i<count; i++ )                                    <---Поехали считывать данные
    {
        Array[i] = new float[3];                                <---Выделяем память под сами элементы строки данных
 
        file.getline( (char *)&line , sizeof(char[256]) );                                        <---Считываем строку

        sscanf ( line , "%f %f %f\n", &Array[i][0], &Array[i][1], &Array[i][2] );     <---Переводим значения из строки сразу в массив данных
    }
file.close();                                                           <---Закрываем файл

Далее с помощью простого двойного цыкла выполняем все требуемые операции с данными

for (int i=0; i<count; i++)
   for (int j=0; j<3; j++)
         {
          Array[i][j]...
         };

Мы выделили память для наших данных, теперь очистим её.

for (int i=0; i<count; i++) delete[] Array[i];
delete[] Array;




Спасибо smile 

Это сообщение отредактировал(а) Vetos - 6.7.2009, 18:54


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1096 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.