• ベストアンサー

sprintfは古いのか。

初歩的な質問で失礼します。 VC6からVS2005に変換はできましたが、ワーニングでsprintfは古いと警告がです。 VS2005風な書き換えはどうするのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

>string.Formatメソッドを利用します。 これは、C++/CLI限定の使い方ですね。 質問者さんにはそぐわない方法かも。 セキュアなsprintf_s()をお使いください。 私もVS2005ですが、MSDNライブラリ(ヘルプ)見れば書いてありますよ。 ヘルプに無ければMSDNサイトの検索をしましょう。 初心者脱出には、MSDNサイトを使いこなす事! http://msdn.microsoft.com/ja-jp/default.aspx

kyotojun
質問者

お礼

zwiさん ありがとうございました。 なかなかMSDNはハードルが高いです。 勉強していきます。

その他の回答 (6)

noname#208124
noname#208124
回答No.7

自分はStrSafe.h使ってます #if _MSC_VERでsprintfとsprintf_s使い分ける必要もなく警告もなくセキュアです

参考URL:
http://msdn.microsoft.com/en-us/library/ms647466.aspx
kyotojun
質問者

お礼

dummさん ありがとうございました。 やはり汎用性がいいですね。 さっそく変更してみます。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.6

C++の場合、正攻法であればstd::ostringstreamを使うことになるのかと思います。 マイクロソフトとしてはsprintf_sを使わせたいのでしょうが、sprintf_sを使ったからといいって、それだけでセキュリティ上の問題がすべて解決するわけではないので要注意です。

kyotojun
質問者

お礼

jactaさん ありがとうございます。 基本的な質問で失礼しました。 初心者には、これでも良いがこれでも良いというのが一番理解しにくいです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#3 のようにして無視するか, _s 付きの sprintf_s を使ってやってください. 今の C ならそのために snprintf があるんだけど, VS2005 だと _snprintf でも「古い」とか言われかねないのか.... ちなみに _snprintf_s って関数もあるんだけど, この関数の引数はおかしい気がする. 「出力バッファの大きさ」と「出力する文字数」の 2つを与えるんだけど, この 2つが無関係にできてどこがうれしいのか想像ができない.

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

私は _CRT_SECURE_NO_DEPRECATE で無視しています

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

「visual studio sprintf 古い」 あたりのキーワードでググってみると、 役に立つサイトが見つかるかもしれません。

回答No.1

string.Formatメソッドを利用します。

関連するQ&A