Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
4 / 3 / 1
Регистрация: 19.09.2020
Сообщений: 40

Преобразование типов

07.10.2023, 02:37. Показов 745. Ответов 10

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток.

Я с очередным нубским вопросом. (:

Как правильно преобразовывать типы ?

Используя WinAPI преобразовать значение переменной в текст и вывести на экран.

Конкретнее :

C++
1
2
3
4
5
6
RECT r = {}; //Массив координат окна 
GetClientRect(hWnd, &r); //Узнаём координаты
char str1[256] = {}; // Символьная переменная
_itoa_s(r.right, str1, 10); // Преобразуем координаты правой границы окна в строковое значение
 
TextOutA(hdc, r.left + 10, r.top + 10, str1, strlen(str1)); // Выводим на экран
На вышеуказанный код отвечает так :
Code
1
warning C4267: аргумент: преобразование из "size_t" в "int"; возможна потеря данных
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2023, 02:37
Ответы с готовыми решениями:

Преобразование типов
Как преобразовать char * в float?

Преобразование типов
Кто знает, как преобразуются друг в друга разные виды строк? Например, System::String ^ в std::string.

Преобразование типов
Всем доброго здоровья. Не могу решить простенькую задачу, уже не знаю что делать.Суть такова нужно вытащить из строки(символьный тип),...

10
Злостный нарушитель
 Аватар для Verevkin
10240 / 5669 / 1260
Регистрация: 12.03.2015
Сообщений: 26,269
07.10.2023, 09:45
Лучший ответ Сообщение было отмечено Pandit как решение

Решение

Цитата Сообщение от Pandit Посмотреть сообщение
Преобразование типов
Конвертирование числа с текст - это не преобразование типов. Это преобразование данных.
Если б я кодил на С/С++, я б юзал форматирование - семейство функций printf().
Кликните здесь для просмотра всего текста
Но это неточно, т.к. есть класс string.

C++
1
sprintf(str1, "%d", r.right);
1
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,997
07.10.2023, 11:19
Лучший ответ Сообщение было отмечено Pandit как решение

Решение

также, в стандарт завезли std::to_string

Добавлено через 1 минуту
C++
1
2
3
4
RECT r{}; //Массив координат окна 
GetClientRect(hWnd, &r); //Узнаём координаты
const auto s=std::to_string(r.right);
TextOutA(hdc, r.left + 10, r.top + 10, s.c_str(), s.size()); // Выводим на экран
1
4 / 3 / 1
Регистрация: 19.09.2020
Сообщений: 40
07.10.2023, 13:59  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
также, в стандарт завезли std::to_string

Добавлено через 1 минуту
C++
1
2
3
4
RECT r{}; //Массив координат окна 
GetClientRect(hWnd, &r); //Узнаём координаты
const auto s=std::to_string(r.right);
TextOutA(hdc, r.left + 10, r.top + 10, s.c_str(), s.size()); // Выводим на экран
Работает, но вылазит варнинг :
Code
1
warning C4267: аргумент: преобразование из "size_t" в "int"; возможна потеря данных
Добавлено через 10 минут
Цитата Сообщение от Verevkin Посмотреть сообщение
Конвертирование числа с текст - это не преобразование типов. Это преобразование данных.
Если б я кодил на С/С++, я б юзал форматирование - семейство функций printf().
Кликните здесь для просмотра всего текста
Но это неточно, т.к. есть класс string.

C++
1
sprintf(str1, "%d", r.right);
Если я правильно понимаю то sprintf выводит в консоль ?
0
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,997
07.10.2023, 14:38
Лучший ответ Сообщение было отмечено Pandit как решение

Решение

Цитата Сообщение от Pandit Посмотреть сообщение
Работает, но вылазит варнинг
да, надо принудительно преобразовать к int, чтобы не ругалось )

Добавлено через 41 секунду
Цитата Сообщение от Pandit Посмотреть сообщение
сли я правильно понимаю то sprintf выводит в консоль ?
форматирует строку
1
Злостный нарушитель
 Аватар для Verevkin
10240 / 5669 / 1260
Регистрация: 12.03.2015
Сообщений: 26,269
07.10.2023, 14:51
Цитата Сообщение от Pandit Посмотреть сообщение
Если я правильно понимаю то sprintf выводит в консоль ?
1
4 / 3 / 1
Регистрация: 19.09.2020
Сообщений: 40
07.10.2023, 15:04  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
да, надо принудительно преобразовать к int, чтобы не ругалось ) ...
Сделал так :
C++
1
2
3
4
RECT r{}; //Массив координат окна 
GetClientRect(hWnd, &r); //Узнаём координаты
const auto s=std::to_string(r.right);
TextOutA(hdc, r.left + 10, r.top + 10, s.c_str(), (int)s.size()); // Выводим на экран
Варнинга нет. Правильный вариант ?

Поменял
C++
1
TextOutA(hdc, r.left + 10, r.top + 10, s.c_str(), s.size());
на
C++
1
TextOutA(hdc, r.left + 10, r.top + 10, s.c_str(), (int)s.size());
0
Злостный нарушитель
 Аватар для Verevkin
10240 / 5669 / 1260
Регистрация: 12.03.2015
Сообщений: 26,269
07.10.2023, 15:06
Цитата Сообщение от Pandit Посмотреть сообщение
Варнинга нет. Правильный вариант ?
1
4 / 3 / 1
Регистрация: 19.09.2020
Сообщений: 40
07.10.2023, 15:20  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Конвертирование числа с текст - это не преобразование типов. Это преобразование данных.
Если б я кодил на С/С++, я б юзал форматирование - семейство функций printf().
Кликните здесь для просмотра всего текста
Но это неточно, т.к. есть класс string.

C++
1
sprintf(str1, "%d", r.right);
Опробовал sprintf :
C++
1
2
3
char str1[256] = {};
sprintf(str1, "%d", r.bottom);
TextOutA(hdc, r.left + 60, r.top + 20, str1, (int)strlen(str1));
компилятор заругался :
Code
1
... Ошибка    C4996   'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS...
Сделал так :
C++
1
2
3
char str1[256] = {};
sprintf_s(str1, "%d", r.bottom);
TextOutA(hdc, r.left + 60, r.top + 20, str1, (int)strlen(str1));
Проблем нет. (:

В чем прикол ? Чем sprintf_s лучше sprintf ?
0
Злостный нарушитель
 Аватар для Verevkin
10240 / 5669 / 1260
Регистрация: 12.03.2015
Сообщений: 26,269
07.10.2023, 15:21
Цитата Сообщение от Pandit Посмотреть сообщение
В чем прикол ? Чем sprintf_s лучше sprintf ?
В sprintf_s встроена защита от переполнения буфера.
Ну чо, легче стало?
1
4 / 3 / 1
Регистрация: 19.09.2020
Сообщений: 40
07.10.2023, 15:25  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
В sprintf_s встроена защита от переполнения буфера.
Ну чо, легче стало?
С sprintf_s покороче как то (:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2023, 15:25
Помогаю со студенческими работами здесь

Преобразование типов
Допустим есть код: float fval; unsigned int ui; int ival; double dval; fval = ui - ival * 1.0; //(1) dval = ui * fval; //(2) ...

преобразование типов
помогите у меня программа выдает ошибки преобразования типов подскажите как должно быть чтоб все работало программа делает перестановки...

Преобразование типов
Кто знает, если определено преобразование struct в double, как преобразовать struct * в double *?

Преобразование типов
Кто знает, как преобразовать double в std::string (можно в несколько этапов)?

преобразование типов
memcpy((void*)stroka,(void*)stroka,ykaz_bukva-ykaz_temp+1); что нужно поставить вместо void* чтоб не было предупреждений


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru