- ベストアンサー
sprintfは古いのか。
初歩的な質問で失礼します。 VC6からVS2005に変換はできましたが、ワーニングでsprintfは古いと警告がです。 VS2005風な書き換えはどうするのでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>string.Formatメソッドを利用します。 これは、C++/CLI限定の使い方ですね。 質問者さんにはそぐわない方法かも。 セキュアなsprintf_s()をお使いください。 私もVS2005ですが、MSDNライブラリ(ヘルプ)見れば書いてありますよ。 ヘルプに無ければMSDNサイトの検索をしましょう。 初心者脱出には、MSDNサイトを使いこなす事! http://msdn.microsoft.com/ja-jp/default.aspx
その他の回答 (6)
自分はStrSafe.h使ってます #if _MSC_VERでsprintfとsprintf_s使い分ける必要もなく警告もなくセキュアです
お礼
dummさん ありがとうございました。 やはり汎用性がいいですね。 さっそく変更してみます。
- jacta
- ベストアンサー率26% (845/3158)
C++の場合、正攻法であればstd::ostringstreamを使うことになるのかと思います。 マイクロソフトとしてはsprintf_sを使わせたいのでしょうが、sprintf_sを使ったからといいって、それだけでセキュリティ上の問題がすべて解決するわけではないので要注意です。
お礼
jactaさん ありがとうございます。 基本的な質問で失礼しました。 初心者には、これでも良いがこれでも良いというのが一番理解しにくいです。
- Tacosan
- ベストアンサー率23% (3656/15482)
#3 のようにして無視するか, _s 付きの sprintf_s を使ってやってください. 今の C ならそのために snprintf があるんだけど, VS2005 だと _snprintf でも「古い」とか言われかねないのか.... ちなみに _snprintf_s って関数もあるんだけど, この関数の引数はおかしい気がする. 「出力バッファの大きさ」と「出力する文字数」の 2つを与えるんだけど, この 2つが無関係にできてどこがうれしいのか想像ができない.
- php504
- ベストアンサー率42% (926/2160)
私は _CRT_SECURE_NO_DEPRECATE で無視しています
- asuncion
- ベストアンサー率33% (2127/6289)
「visual studio sprintf 古い」 あたりのキーワードでググってみると、 役に立つサイトが見つかるかもしれません。
- galma_zabi
- ベストアンサー率33% (41/124)
string.Formatメソッドを利用します。
お礼
zwiさん ありがとうございました。 なかなかMSDNはハードルが高いです。 勉強していきます。