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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.01.2009, 14:04   #1
atlon
Пользователь
 
Регистрация: 30.08.2008
Сообщений: 38
По умолчанию Перевод с одного значения в другое в С++ 2008

Написал код конвертации одного значения в другое.
float L;
CString myString = _T("2.145");
L = atof(myString);
Но при компиляции вавадет вот такой текст:
error C2664: 'atof' : cannot convert parameter 1 from 'CString' to 'const char *'
Как перевести CString в char или в float.
Я пишу в С++ 2008.
atlon вне форума
Старый 07.01.2009, 14:57   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Код:
L = atof(myString);
точно не помню но должно бить так
Код:
L = atof(myString.c_str());
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума
Старый 07.01.2009, 15:12   #3
atlon
Пользователь
 
Регистрация: 30.08.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от ISergeyN Посмотреть сообщение
точно не помню но должно бить так
Код:
L = atof(myString.c_str());
Не выдаёт ошибку.
error C2039: 'c_str' : is not a member of 'ATL::CStringT<BaseType,StringTrait s>'
А есть другой способ перевода.
atlon вне форума
Старый 07.01.2009, 15:31   #4
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Не выдаёт ошибку.
напутал.
сначала нужно конвентировать CString в char.
вот пример
Код:
CString test("123");
char *ch;
ch = test.GetBuffer();
L = atof(ch);
должно работать.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума
Старый 07.01.2009, 16:05   #5
atlon
Пользователь
 
Регистрация: 30.08.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от ISergeyN Посмотреть сообщение
напутал.
сначала нужно конвентировать CString в char.
вот пример
Код:
CString test("123");
char *ch;
ch = test.GetBuffer();
L = atof(ch);
должно работать.
Не не получаеться опять ошибки
error C2440: '=' : cannot convert from 'wchar_t *' to 'char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

К стате
CString test("123");
Пишеться вот так CString test_T("2.145");
Я пишу в C++ 2008 MFC
atlon вне форума
Старый 07.01.2009, 16:47   #6
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

_UNICODE (UNICODE) на отключить.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума
Старый 07.01.2009, 17:05   #7
atlon
Пользователь
 
Регистрация: 30.08.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от ISergeyN Посмотреть сообщение
_UNICODE (UNICODE) на отключить.
Тоесть если ты про _Т то это для меня не имеет значение.
atlon вне форума
Старый 07.01.2009, 17:31   #8
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

если включен _UNICODE то _T(x) к тексту добавляет строковой литерал
"L" тоесть CString test(L"text") он указывает что строка "text" имеет формат wchar_t. объявлено ето так
Код:
#define __T(x)      L ## x
При отключеном _UNICODE , _T(x) объявлен так
Код:
#define __T(x)      x
выправте меня если не так.

в препросесоре допеши "$(NOINHERIT)" и должно работать.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....

Последний раз редактировалось ISergeyN; 07.01.2009 в 17:38.
ISergeyN вне форума
Старый 07.01.2009, 17:54   #9
atlon
Пользователь
 
Регистрация: 30.08.2008
Сообщений: 38
По умолчанию

Чтото вы меня запутали UNICODE тут не причём в йункции atof нет конвертировыния из CString. А функция вообще не для этого
GetBuffer();
она для Получения двоичные данные, которые представляют ключевой идентификатор.
atlon вне форума
Старый 09.01.2009, 19:37   #10
atlon
Пользователь
 
Регистрация: 30.08.2008
Сообщений: 38
По умолчанию

Ну что не кто незнает.
atlon вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Dblookupcombobox автоматическое заполнение в случае одного значения 1sal1 БД в Delphi 1 07.10.2008 21:41
ovElements и TITLE и другое PashaXP Win Api 0 06.08.2008 09:40
Перетаскивание значения одного поля в другое inret Общие вопросы Delphi 3 09.05.2008 15:26
[Delphi] Замена одного слова на другое... ZhooZhik Помощь студентам 5 09.01.2008 23:31
Присвоение значения одного поля другому frai БД в Delphi 2 20.09.2007 15:03