LINUX.ORG.RU

atof - "." или ","


0

0
Столкнулся с тем, что atof у меня преобразует "1.1" в 1.0, очевидно из-за локали( "1,1" преобразуется правильно ), а как узнать какой именно разделитель нужен для строки передаваемой atof - "," или "."? можно конечно так:

bool coma = ( atof("1,1") == 1.1 );

но хотелось бы правильно :)

★★★★
Ответ на: комментарий от Deleted
под виндой( msvc ) такое не катит - нет langinfo.h, а мне надо чтоб работало под linux, mac, win, но спасибо - буду знать
lester ★★★★
() автор топика
msdn говорит что под виндой есть localeconv, возвращает указатель на структуру lconv в которой есть поле decimal_point
anonymous
()
imho прощё написать своё. Я для себя так и сделал. Проблемы с локалями в разных системах решаются по-разному, что означает, что эти функции де-факто не стандартизированы. Вторая причина - нет гарантий thread-safety.
anonymous
()
Ответ на: комментарий от anonymous
Свое будет медленнее работать. Гарантии есть если компоновать с правильной либой. К тому же невозможно написать небезопасную atof :)
anonymous
()
Ответ на: комментарий от anonymous
>К тому же невозможно написать небезопасную atof :)

Ты не выёживайся, а пальцем покажи
DIMON ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.