こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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;

}

投稿日時 - 2007-08-10 00:04:14

QNo.3242686

困ってます

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

string y;
y = boost::str(boost::format("%10.3f, [%16s]") % x % str);

とすればできます。

投稿日時 - 2007-08-10 00:11:41

補足

ありがとうございます。
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

投稿日時 - 2007-08-10 00:24:38

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2007-08-10 16:01:04

ANo.3

> しかし、意味不明なワーニング?がたくさん出てきています。
> 出なくするにはどうしたらよいのでしょうか?

現在、Boostサイトのトップページ http://www.boost.org/ にも掲載されているように、_SCL_SECURE_NO_DEPRECATE マクロの定義が必要です。

投稿日時 - 2007-08-10 08:38:19

ANo.1

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

投稿日時 - 2007-08-10 00:09:54