Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82

CString to int (не совсем то, про что Вы подумали)

20.07.2011, 16:32. Показов 5411. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется 16-ти ричное число, вида:

C++
1
2
CString digits;
digits = "0xffff";
т.е. обычный unsigned short.

вопрос в том, как мне перевести digits ---(from CString)---> int ?

Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2011, 16:32
Ответы с готовыми решениями:

Закрывается командная строка (не то, что вы подумали =) )
Суть в том, что командная строка при выполнении программы закрывается через какое-то время.К примеру, я успеваю ввести динамический массив...

Как правильно записать данные в БД(Не то что вы подумали)
есть таблица с перечнем полей к примеру ФИО Адрес Телефон Образование Пол и еще много каких нибуть с помощью связи...

перевод из CString EditBox'a в int, потом вывод массива int в другой EditBox
Программа на Visual C++ 6.0 Сильно не бить если сложно понять этот ужас. Если кому надо пояснялки могу добавить. Вопрос в следующем: ...

9
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
20.07.2011, 17:37
like this
C++
1
2
3
CString  str = "0xffff";    
unsigned short num;
sscanf((const char*)str, "%x", &num);
1
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
20.07.2011, 22:16  [ТС]
Цитата Сообщение от xAtom Посмотреть сообщение
like this
C++
1
2
3
CString  str = "0xffff";    
unsigned short num;
sscanf((const char*)str, "%x", &num);
Пишет:
error C2440: 'type cast' : cannot convert from 'CString' to 'const char *'
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
20.07.2011, 23:15
Как вариант можно попробовать
C++
1
2
CString  str = "0xffff";
(unsigned int)atof(str);
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
20.07.2011, 23:26
Для проверки сделал по быстренькому MFC-проектик, код с atof не катит, работает вот такой вариант
C++
1
2
3
CString  str = "0xffff";        
    sscanf(str.GetBuffer(str.GetLength()), "%x", &m_edit1);
    UpdateData(false);
Вот сам проект, для конвертации строки нужно нажать кнопку ОК
Вложения
Тип файла: rar str2uint.rar (8.7 Кб, 27 просмотров)
1
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
21.07.2011, 11:07  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Для проверки сделал по быстренькому MFC-проектик, код с atof не катит, работает вот такой вариант
C++
1
2
3
CString  str = "0xffff";        
    sscanf(str.GetBuffer(str.GetLength()), "%x", &m_edit1);
    UpdateData(false);
Вот сам проект, для конвертации строки нужно нажать кнопку ОК
Пишет ошибку вида:

error C2664: 'sscanf' : cannot convert parameter 1 from 'wchar_t *' to 'const char *'

Если меняю так:


C++
1
2
3
4
    CString  str;
    str = "0xffff";      
    UINT m_edit1;
    sscanf((const char*)str.GetBuffer(str.GetLength()), "%x", &m_edit1);
тогда вообще всегда в m_edit1 оказывается нуль, на сколь я понимаю он считывает только первый символ из str и это его вполне удовлетворяет.

Мб что-то нужно сменить в настройках проекта? (Ошибка в моем проекте, Ваш проект работает на УРА!)

Добавлено через 28 минут
(Project->Properties->Configuration Properties->General->Project Defaults->Character Set) to Not Set.

Сменил настройки так.

Матюгаться перестал, но стиль окна изменился.... в стиль древнего win98.

Мб есть иные способы перевода wchar_t * в const char* ?

Добавлено через 1 час 7 минут
Извиняюсь за грубое слово, но затрахался я два дня заниматься этой ***** мутотенью..

Вот как реализовал (я работал в режиме UNICODE)

C++
1
2
3
4
5
6
7
8
9
10
11
char 16bits[7];
char mass[1][1];
CString str;
unsigned short y;
 
str=_T("0xffff");
 
for(int i=0; i<6; i++)
wctomb(npath[i], str.GetBuffer()[i]);
 
sscanf(npath[0], "%x", &y);
(y=65535, т.е. тоже самое, что и встроке, только лежит в int и записано 1-ричной системе).
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
21.07.2011, 13:55
C++
1
int n = _wtoi(str.GetString())
Так не работает?
1
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
21.07.2011, 14:50  [ТС]
Цитата Сообщение от bigredcat Посмотреть сообщение
C++
1
int n = _wtoi(str.GetString())
Так не работает?
Нет.. все способы перепробовал. выше - рабочий.
1
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
21.07.2011, 17:06
Да, _wtoi не переваривает hex представление числа
Но это работает:
C++
1
swscanf(str.GetString(), L"%i", &num);
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
22.07.2011, 09:35
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
код с atof не катит
трудно сделать шоб он катил
atof для плавающей запятой
atoi для целочисленной
Функция atoi (ASCII to integer, из ASCII в целое число) в языке программирования Си используется для приведения (конвертации) строки в числовой вид.
int atoi(const char *str)

Аргумент str означает строку, представленную в виде массива символов, содержащего символы знакового целого (тип int) числа. Строка должна быть нуль-терминированной, то есть оканчиваться символом «\0». Когда atoi() получает строку без числовых последовательностей, то в этом случае возвращает ноль (0). Если строка содержит корректную последовательность цифр, представляющих число 0, то также возвращается 0, при этом по возвращаемому числу невозможно определить содержит ли строка корректное число или нет. Более новая функция strtol не имеет подобного недостатка.

Варианты функции atoi — atol, atof и atoll (впоследствии известная как atoq) используются для приведения строки к типам long, double или long long, соответственно:
long atol(const char *str)
double atof(const char *str)
long long atoll(const char *str) (C99)
Функция atof в языке программирования Си используется для приведения (конвертации) строки в числовой вид (к числовому типу). Её объявление выглядит следующим образом
double atof (const char *string)

где string - текстовое представление числа с плавающей точкой двойной точности (double). Если строка не является корректным текстовым представлением числа double, то функция atof "тихо" завершит работу, возвратив ноль (0.0).

Необходимо отметить, что atoi и atol возвращают переменные типы в зависимости от своих названий ("atoi" возвращает integer (целое), а "atol" возвращает числа типа long integer (длинное целое)), тогда как atof не возвращает float (числа с плавающей запятой) как этого можно было бы ожидать, а вместо этого возвращает double (число с плавающей точкой двойной точности).

Схожей функцией является sscanf. Эта функция извлекает значения из строк и возвращает полученный аргумент как число корректных значений, извлечённых ею (то есть, в отличие от atof, функция sscanf может быть использована для проверки, начинается ли строка с корректного числа). Проще говоря, значение, возвращаемое функцией, равно количеству переменных, которым реально были присвоены значения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2011, 09:35
Помогаю со студенческими работами здесь

Преобразование int в CString ?
Подскажите как преобразовать? itoa преобразовует в *char, а хотелось бы сразу в CString...

Как из CString получить int ... заранее спасибо!!
Проблемка ... Как из CString получить int.... только плиз не советуйте куда заглядывать в MSDN у меня его нету.... СПАСИБО....

Как перевести CString -ское число в Int?
Есть CString -ское число. Как перевести это число в int??? Вот: { m_cap = m_cap + '1'; m_cap = c; int c = attol(m_cap); c =...

Вечный вопрос))CString to float/string/int
Интересует такое... в проекте MFC нужно перевести строку с Edit Text в типы float int или string...сколько способов не пробовал но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru