Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 16:20   #1
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию читать из файла

Вот функция которая должна считывать строку из файла и добавлять данные в структуры. Строка разбивается на char int double.
Вопрос конкретно про функцию atof, которая должна из 3ёх символов получить дробное число. Функция строку преобразовывает в дробное число, но почему-то отбрасывает дробную часть. Почему??
Код:
vector<NOTEBOOK> readOfFile()
{
	vector<NOTEBOOK> A;
	NOTEBOOK note;
	short int number;
	string kk;
	ifstream potok("note.txt");
	string a;
	while(!potok.eof())
	{
		getline(potok, a);
		for(int i = 0; i<21; i++)
		{
		note.model[i]=a[i];
		}
		for(int i = 21; i<25; i++)
		{
			kk+=a[i];	
		}
		note.price=atoi(kk.c_str());
		kk.clear();
		float ff;
		double ddd;
		for(int i = 26; i<29; i++)
		{
			kk+=a[i];	
		}
		note.weight=atof(kk.c_str()); //вот использование функции
	}
		potok.close();
	return A;
}
PinkPink вне форума
Старый 19.02.2012, 16:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А какой разделитель в числах стоит? Запятая или точка?
I'm learning to live...
Stilet вне форума
Старый 19.02.2012, 16:40   #3
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А какой разделитель в числах стоит? Запятая или точка?
В файле записано через точку
7.2
PinkPink вне форума
Старый 19.02.2012, 16:42   #4
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А какой разделитель в числах стоит? Запятая или точка?
блин, через запятую работает.
только вот вместо 5.6 выводит 5.5999999999999996
подскажите пожалуйста, как округлить?
PinkPink вне форума
Старый 19.02.2012, 16:45   #5
AlexDark
Форумчанин
 
Аватар для AlexDark
 
Регистрация: 23.12.2011
Сообщений: 117
По умолчанию

Не самый удачный способ читать из файла... Насчет отбрасывания, проверь тип данных поля weight в NOTEBOOK.

И вообще все можно делать гораздо проще:
Код:
vector<NOTEBOOK> readOfFile()
{
vector<NOTEBOOK> A;
	NOTEBOOK note;
	fstream file("note.txt");	
		 if (!file){
				cout<<"Error open file\n";
				return A;
			}
		  else
		 {
				   while(!potok.eof())
				   {
						file>>note.model;
						file>>note.price;
						file>>note.weight;
						A.pushback(note);// !в упор не видел этого у тебя, нужно ж скидывать в вектор прочитанное
				   }
                                                file.close();
				   return A;
		 }
}
AlexDark вне форума
Старый 19.02.2012, 16:49   #6
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от AlexDark Посмотреть сообщение
Не самый удачный способ читать из файла... Насчет отбрасывания, проверь тип данных поля weight в NOTEBOOK.

И вообще все можно делать гораздо проще:
Код:
vector<NOTEBOOK> readOfFile()
{
vector<NOTEBOOK> A;
	NOTEBOOK note;
	fstream file("note.txt");	
		 if (!file){
				cout<<"Error open file\n";
				return A;
			}
		  else
		 {
				   while(!potok.eof())
				   {
						file>>note.model;
						file>>note.price;
						file>>note.weight;
						A.pushback(note);// !в упор не видел этого у тебя, нужно ж скидывать в вектор прочитанное
				   }
                                                file.close();
				   return A;
		 }
}
A.pushback(note); пока не написала, так как рано ещё туда закидывать, когда не пашет(((
А насчёт способа спасибо, только немного непонятно как программа то будет "понимать" откуда ей из файла модель выковыривать, откуда цену и т д
PinkPink вне форума
Старый 19.02.2012, 17:04   #7
AlexDark
Форумчанин
 
Аватар для AlexDark
 
Регистрация: 23.12.2011
Сообщений: 117
По умолчанию

В объекте потока внутри есть курсор указывающий на место откуда он в данный момент выковыривает).

А оператор чтения из потока в данном случае знает какого типа переменную ему стоит вычитать и куда переставить курсор после вычитавания, при этом пробелы переводы строк и т.п. значения не имеют (естественно хоть один пробел должен разделять переменные).
Правда, если модель ноута будет предоставлена 2+ словами тут уже придется еспользовать именно file.read( )
В любом случае так удобнее же)
AlexDark вне форума
Старый 19.02.2012, 17:40   #8
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от AlexDark Посмотреть сообщение
В объекте потока внутри есть курсор указывающий на место откуда он в данный момент выковыривает).

А оператор чтения из потока в данном случае знает какого типа переменную ему стоит вычитать и куда переставить курсор после вычитавания, при этом пробелы переводы строк и т.п. значения не имеют (естественно хоть один пробел должен разделять переменные).
Правда, если модель ноута будет предоставлена 2+ словами тут уже придется еспользовать именно file.read( )
В любом случае так удобнее же)
у меня не по-порядку идут те значения, которые нужно считать. в строке много чего записано, из всего текста я выбираю только некоторые значения, которые нужно записать в файл.
а вообще, очень хороший и удобный способ. возьму на заметку. спасибо
PinkPink вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Читать из файла случайную строку KoBRaAndrey Общие вопросы Delphi 3 28.10.2009 21:38
Читать из файла и кикнуть :) KoBRaAndrey Общие вопросы Delphi 8 06.10.2009 22:05
нужно читать слова с текстового файла artush1984 Общие вопросы C/C++ 1 18.09.2009 16:12
Что читать? BlackMamba SQL, базы данных 2 23.07.2008 00:48