• ベストアンサー

boost::formatの値をstring型にコピーしたい

boost::formatの値をstring型にコピーしたいのですが、うまくいきません。boost自体初めてで以下のサイトからダウンロードし、展開後VS2005のVCのインクルードフォルダーにboostフォルダーをまるまるコピーしただけですが・・・ http://sourceforge.net/project/showfiles.php?group_id=7586 boost 1.34.1 #include <iostream> #include <boost/format.hpp> using namespace std; using boost::format; void main(){ double x = 1.234; string str("abc"); //cout << format("%10.3f, [%16s]") % x % str << endl; // サンプルはこうでした。 // いったんstring型に入れて表示させたい。 string y; y = boost::format("%10.3f, [%16s]") % x % str; // エラー箇所 std::cout << y << std::endl; }

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

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

string y; y = boost::str(boost::format("%10.3f, [%16s]") % x % str); とすればできます。

binma
質問者

補足

ありがとうございます。 boost::str, boost::io::str両方うまくいきました。 しかし、意味不明なワーニング?がたくさん出てきています。 出なくするにはどうしたらよいのでしょうか? >cl /clr test.cpp Microsoft(R) C/C++ Optimizing Compiler Version 14.00.50727.4 for Microsoft(R) .NET Framework Version 2.00.50727.832 Copyright (C) Microsoft Corporation. All rights reserved. test.cpp C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\boost/format/alt_sstream_impl.hpp(252) : warning C4996: 'std::char_traits<char>::copy' が古い形式として宣言されました。 C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\iosfwd(446) : 'std::char_traits<char>::copy' の宣言を確認してください。 メッセージ: 'You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library' C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\boost/format/alt_sstream_impl.hpp(223): クラス テンプレート のメンバ関数 'int boost::io::basic_altstringbuf<Ch,Tr,Alloc>::overflow(int)' のコンパイル中 with [ Ch=char, Tr=std::char_traits<char>, Alloc=std::allocator<char> ] C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\boost/format/format_class.hpp(136) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::io::basic_altstringbuf<Ch,Tr,Alloc>' の参照を確認してください with [ Ch=char, Tr=std::char_traits<char>, Alloc=std::allocator<char> ] test.cpp(16) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::basic_format<Ch>' の参照を確認してください with [ Ch=char ] Microsoft (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. /out:test.exe test.obj

その他の回答 (3)

回答No.4

 ちなみに y = (boost::format("%10.3f, [%16s]") % x % str).str();  でもいけますよ。

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

> しかし、意味不明なワーニング?がたくさん出てきています。 > 出なくするにはどうしたらよいのでしょうか? 現在、Boostサイトのトップページ http://www.boost.org/ にも掲載されているように、_SCL_SECURE_NO_DEPRECATE マクロの定義が必要です。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

boost::io::str を使いたまえ。