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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2009, 11:42   #1
Brigitta
Новичок
Джуниор
 
Регистрация: 09.11.2009
Сообщений: 4
Печаль преобразование строки в float-переменную

Здравствуйте, уважаемые программисты. У меня проект в VS2005. При использовании стандартной atof весьма и весьма глючит (подозреваю из-за ввода либо точки, либо запятой, разделяющих десятичную часть, но нет точной уверенности).
Это считывается с диалогового окна
Код:
				
case IDOK:
{
HWND hEdit = GetDlgItem(hWnd, IDC_EDIT1); char temp[200]; GetWindowText(hEdit, temp, 200); percentage = atof(temp); EndDialog( hWnd,0 ); break;
}
Помогите пожалуйста
Brigitta вне форума Ответить с цитированием
Старый 09.11.2009, 12:31   #2
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Ну так и проверил бы с запятой для начала. :) Должна быть точка.
А как именно глючит?
ds.Dante вне форума Ответить с цитированием
Старый 09.11.2009, 12:38   #3
Brigitta
Новичок
Джуниор
 
Регистрация: 09.11.2009
Сообщений: 4
По умолчанию

желательно бы универсальнее ее сделать.
Ввожу 0,01 - она переменную по-видимому, обнуляет полностью.
Конечно, при 0.01 нет, но ведь люди могут ввести и так, и так, тем более, запятая эта - на цифровой клавиатуре находится...
А еще не подскажете, как с помощью messagebox вывести эту действительную переменную, чтоб убедиться в рзультате?
в С++ намного сложнее с этими действит. числами, нежели в delphi...
Brigitta вне форума Ответить с цитированием
Старый 09.11.2009, 12:59   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Brigitta
естественно, чтобы преобразовать строку во float переменную, строка должна быть в правильном формате! что мешает проверить и заменить, если требуется, запятую на точку? А еще люди туда могут и буквы ввести, и ты опять будешь грешить на atof?

Цитата:
А еще не подскажете, как с помощью messagebox вывести эту действительную переменную, чтоб убедиться в рзультате?
Код:
float f = 100.5;
char str[64];
sprintf(str, "%f", f);
MessageBox(GetActiveWindow(), str, 0, 0);
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 09.11.2009, 13:04   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

1) Можно вручную заменить запятую на точку
2) Можно использовать класс CString

Второе предпочтительнее, так как есть много стандартных функций, в том числе и для перевода числа в строку.
ds.Dante вне форума Ответить с цитированием
Старый 09.11.2009, 13:10   #6
Brigitta
Новичок
Джуниор
 
Регистрация: 09.11.2009
Сообщений: 4
По умолчанию

ds.Dante а не подскажете, как это сделать?
я только знакомлюсь с с++, поэтому знаю там.. в общем-то ничего..
Если не затруднит, конечно...
Спасибо за MessageBox)
Brigitta вне форума Ответить с цитированием
Старый 09.11.2009, 13:59   #7
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Советую активно использовать MSDN.
http://msdn.microsoft.com/en-us/libr...89(VS.80).aspx

Замена символа - функция Replace();
Перевод числа в строку - Format().
ds.Dante вне форума Ответить с цитированием
Старый 09.11.2009, 14:19   #8
Brigitta
Новичок
Джуниор
 
Регистрация: 09.11.2009
Сообщений: 4
По умолчанию

Благодарю!
))
Brigitta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование строки Neeter Общие вопросы C/C++ 5 05.07.2009 16:25
Паскаль. Преобразование строки andronova Помощь студентам 1 13.04.2009 12:55
преобразование строки xaero93 Помощь студентам 3 05.03.2009 13:00
Преобразование строки(ASM) ManU Помощь студентам 4 11.06.2008 17:20
Преобразование строки во время kayman Общие вопросы Delphi 7 02.10.2007 15:41