Объясните тонкости:
в чем разница между _stprintf() и wsprintf() ???
С уважением,
RadioShark
31.01.04 13:42: Перенесено модератором из 'C/C++' — ПК
Re: В чем разница между _stprintf() и wsprintf()
От:
Аноним
Дата:
28.01.04 13:00
Оценка:
Здравствуйте, RadioShark, Вы писали:
RS>Привет!
RS>Объясните тонкости: RS>в чем разница между _stprintf() и wsprintf() ???
Вообще-то это вопрос в WinAPI а не в С++. Первая — это универсальное имя (макрос), которое в зависимости от наличия макросов _UNICODE (UNICODE) раскроется либо в sprintf, либо в wsprintf.
Здравствуйте, RadioShark, Вы писали:
RS>Привет!
RS>Объясните тонкости: RS>в чем разница между _stprintf() и wsprintf() ???
RS>С уважением, RS>RadioShark
_stprintf — макрос, раскрывающийся в функции стандартной библиотеки С sprintf / swprintf в зависимости от #ifndef _UNICODE
wsprintf — макрос, раскрывающийся в функции winapi wsprintfA / wsprintfW в зависимости от #ifndef UNICODE
В MSDN это должно быть описано
Здравствуйте, Alexmoon, Вы писали:
A>Здравствуйте, RadioShark, Вы писали:
A>sprintf — работает с типами char A>wsprintf — с wchar_t
A>ANSI и UNICODE версии одного алгоритма
Не путайте swprintf() и wsprintf() !!!
_stprintf() == swprintf() когда определен макрос _UNICODE
Вопрос открыт.
Re[2]: В чем разница между _stprintf() и wsprintf()
Здравствуйте, folk, Вы писали:
F>_stprintf — макрос, раскрывающийся в функции стандартной библиотеки С sprintf / swprintf в зависимости от #ifndef _UNICODE F>wsprintf — макрос, раскрывающийся в функции winapi wsprintfA / wsprintfW в зависимости от #ifndef UNICODE F>В MSDN это должно быть описано
т.е., как я понял _stprintf() — это относится к стандартной библиотеки, а wsprintf() — это функция winapi.
Это и все различие?
Какая принципиальная разница в использовании _stprintf() и wsprintf() ???
Re[3]: В чем разница между _stprintf() и wsprintf()
Здравствуйте, RadioShark, Вы писали:
RS>т.е., как я понял _stprintf() — это относится к стандартной библиотеки, а wsprintf() — это функция winapi.
не правильно
RS>Это и все различие? RS>Какая принципиальная разница в использовании _stprintf() и wsprintf() ???
отличие в том что ты можешь компилять версию программы для Win98 тогда Unicode тебе не нужен, и версию для NT тогда нужен. Соотвтетственно что бы не иметь две версии исходников можно использовать макрос.
... << RSDN@Home 1.1.0 stable >>
Re[3]: В чем разница между _stprintf() и wsprintf()
Здравствуйте, RadioShark, Вы писали:
RS>Не путайте swprintf() и wsprintf() !!!
RS>_stprintf() == swprintf() когда определен макрос _UNICODE
Лично для себя я такие вещи уже давно не путаю.
Если вопрос был только в этом, тогда в чем проблема? В МСДН все настолько прозрачно написано, что я даже не уточнял лишний раз, потому что думал что вопрос лишь в разнице использования различных кодировок.
wsprintf и аля иже с ними напоминающими интерфейс CRT — ИМХО были введены лишь для того чтобы работать с типами Майкрософт без лишней конвертации, которая всегда потенциальный источник ошибок и очень зависящая от реализации. И то что LPTSTR на сегодня эквиваленто char* or wchar_t* в зависимости от определенного макроса — это совершенно может не являтся фактом в последующих версиях их OS Windows. Поэтому если твоя программа only Windows implementation, то лучше пользоваться WinAPI аналогами. Это мое ИМХО.
Re[4]: В чем разница между _stprintf() и wsprintf()
Здравствуйте, Denis, Вы писали:
D>Здравствуйте, RadioShark, Вы писали:
RS>>т.е., как я понял _stprintf() — это относится к стандартной библиотеки, а wsprintf() — это функция winapi. D>не правильно
Не путай человека, он сказал почти правильно.
На всякий случай отмечу что _stprintf не входит в стандартную библиотеку, это майкрософтская надстройка.
RS>>Это и все различие? RS>>Какая принципиальная разница в использовании _stprintf() и wsprintf() ???
wsprintf не умеет форматировать числа с плавающей точкой и 64-битные числа.