2012-01-22 4 views
0

Что такое альтернативная функция C++ для _tprintf в win32 api. Я нашел много вещей в книге Чарльза Петцольда для программирования Windows, которую не содержит стандарт C++, поскольку он написан на C. Будет ли использование функций C в программах на C++ законным в соответствии со стандартом.Что такое альтернативная функция C++ для _tprintf в win32 api?

PS: Я знаю, что C++ является надмножеством C, но есть много вещей, которые различны в обоих из них.

+1

Обратите внимание, что если вы не можете использовать '__tprintf()', так как написано в C, то вы можете не использовать любой из API Win32 вообще (поскольку он также написан на С). –

+0

Это было полезно в предыдущем веке, когда были все еще не-Unicode-операционные системы. Все закончилось, и дискета на последней рабочей машине Windows 98 скончалась год назад. Вместо этого используйте wprintf(). –

+0

[** C++ не является надмножеством C **] (http://stackoverflow.com/q/1201593/78845)! – Johnsyweb

ответ

2

Поскольку ваш вопрос конкретно спрашивает о стандартной при поддержке Юникода API, ответ:

Стандарт не предусматривает какой-либо. Таким образом, для этого нет готового к переносу api. Вам придется написать собственную реализацию, которая открывает поток в двоичном режиме и байт чтения/записи по байту .

+0

Я не был человеком, который ниспроверг, но я думаю, что этот ответ неполный. Да, они спрашивали о стандартных функциях Unicode на C++, но они явно также говорят о Win32 API. Поэтому, если для этой цели существует функция, предоставляемая Windows API, было бы более полезно предложить, чтобы вместо этого предлагалось написать свою собственную реализацию. –

+0

@CodyGray: Я не знаю, неправильно ли я прочитал Q, или он был отредактирован позже, но я помню, как он читал его, запрашивая стандартную совместимую замену для '_tprintf' и, следовательно, предложение. В любом случае необъяснимое нисходящее движение, подобное этому, никому не помогает. –

1

Вы можете использовать большинство функций C в C++. Конечно, вы можете использовать что-либо в win32 api.

PS: C++ не является подмножеством C, но C является близким подмножеством C++.

+0

Хорошо. Если я использую C и C++ в программе win32 api, могу ли я использовать функции C++, такие как STL, Classes и т. Д. – user1162272

+0

@ user1162272: Да, абсолютно. –

+1

@ user1162272: имейте в виду, что существуют некоторые ограничения использования возможностей C++ в среде Win32: в частности, любые обратные вызовы Win32, такие как EnumWindowsProc или WindowProc или DialogProc, не должны исключать исключения C++; стоит помнить, учитывая, что некоторые классы STL будут бросать исключения в определенных случаях. В общем, вы можете использовать возможности C++, но вам нравится в вашем собственном коде, но ограничены подмножеством C при работе с фактическими API-интерфейсами Win32. – BrendanMcK

0

Безопасной альтернативой C++ для tprintf() будет wprintf_s().

int wprintf_s(const wchar_t *format [,argument]...); 
Смежные вопросы