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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2017, 15:48   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию _atold: идентификатор не найден

Здравствуйте!
Поставлена задача:
Программа получает от пользователя строку вида: $ 1,233,432.332 ( например ) Далее программа переводит значение строки в тип long double присваивая это значение переменной "b".
Но вот беда, выдается ошибка "_atold: идентификатор не найден"
Код:
#include<iostream>
#include<conio.h>
#include<cmath>
using namespace std;
class money
{
private:
	long double summa;
	char str [23];
public:
	money (): summa(0)
	{}
	long double mstold()
	{
		cout<<"Введите денежную строку: \n";
		cin.get(str, 23);
		long double a=_atold(str);
		return a;	
	}
};
int main()
{
	long double b;
	money m1;
	b=m1.mstold();
	return 0;
}
Помогите пожалуйста понять причину. Всё делал по учебнику. Там предлагается использовать заголовочные файлы STDLIB.H или MATH.H для функции _atold()

Последний раз редактировалось KAMLS; 07.05.2017 в 15:52. Причина: Не дописал
KAMLS вне форума Ответить с цитированием
Старый 07.05.2017, 16:00   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Без подчеркивания + подключите стдлиб и используйте компилятором старенький. А лучше http://en.cppreference.com/w/cpp/string/byte/strtof
p51x вне форума Ответить с цитированием
Старый 07.05.2017, 16:06   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Сделал stdlib.h и без подчеркивания, не работает. Ошибка та же. VS 2008.
KAMLS вне форума Ответить с цитированием
Старый 07.05.2017, 17:03   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

У майкрософта ее и не было. Есть atof, который дабл возвращает и _atodbl. Но лучше юзать что-то стандартное и совместиммое.
p51x вне форума Ответить с цитированием
Старый 08.05.2017, 07:52   #5
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Быть может опечатка это? Как считаете?
Изображения
Тип файла: jpg Задачка.jpg (101.6 Кб, 124 просмотров)
KAMLS вне форума Ответить с цитированием
Старый 08.05.2017, 07:54   #6
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Я уже какие только функции не использовал. Некоторые не видятся другие не работают..
KAMLS вне форума Ответить с цитированием
Старый 08.05.2017, 08:09   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так чтобы работали надо прочитать документацию по функции и узнать как ее использовать.

Про _ фигня какая-то написана (точнее непонятно какая связь между частью предложения до "—" и после).
В С++ имена начинающиеся с _ обычно используются для нестандартных функций и т.п. (то есть доступных только в этом компиляторе).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.05.2017, 08:30   #8
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

На другой ветке форума нашел про именно эту проблему. Там пришли к вводу, что эта задача должна быть после прохождения темы "указатели".
http://www.programmersforum.ru/showthread.php?p=845258
Так что с функцией полный штык.
Но если использовать atof то всё работает. Но форма вывода экспоненциальная, через букву "е". А хочется простую форму, как достичь?

Ввожу целое (!) число. А он мне его сокращает! (atof)
Сокращает на 89 полновесных единиц!!!
Изображения
Тип файла: jpg кадр_7.jpg (69.0 Кб, 158 просмотров)

Последний раз редактировалось Alex11223; 08.05.2017 в 08:42.
KAMLS вне форума Ответить с цитированием
Старый 08.05.2017, 08:37   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вам же уже сказала:
1. с _ обычно специфические для компилятора функции были (посмотрите в начале книги или в ведении, какой там рекомендуется)
2. у майкрософта ее нет, я вам дал аналогии; документацию приходится читать
3. да, такое бывает и коммитет старается от этого избавляться. поэтому я и говорю - используйте более стандартное и переносимое

Цитата:
Там пришли к вводу, что эта задача должна быть после прохождения темы "указатели".
Как связаны указатели и наличие функции в компиляторе?

Цитата:
Но форма вывода экспоненциальная, через букву "е". А хочется простую форму, как достичь?
atof ничего не выводит, для std::cout есть std::fixed и прочие флаги

П.С. Для расширения кругозора узнайте сколько в вашем компиляторе у флоата значащих цифр...
p51x вне форума Ответить с цитированием
Старый 08.05.2017, 08:39   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

не нужны указатели, там тоже фигню сказал Smitt&Wesson, о чем и говорится дальше.

Вывод не имеет отношения к функции, просто так выводятся значения не целочисленного типа по умолчанию.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает форма, идентификатор не найден (с++, MSVS Express 2013) Ayerice Помощь студентам 0 10.05.2014 19:21
Ошибка "не найден идентификатор $$" Jamguranga Visual C++ 6 07.02.2013 00:41
error pow: идентификатор не найден Faton 11 Общие вопросы C/C++ 2 27.11.2012 22:17
Ошибка-идентификатор не найден Саша019960 Помощь студентам 1 01.12.2011 00:26
Ошибка-идентификатор не найден Саша019960 Помощь студентам 1 30.11.2011 18:30