0

Mac (GCC 4.2) で短い小さなプログラムをコンパイルする際に、非常に興味深い問題があります。以下の関数は、char または文字列のみを stringstream にストリーミングしますが、それ以外 (int、double、float など) はストリーミングしません。実際、たとえば int を文字列に変換しようとすると、失敗フラグが設定されます。

_GLIBCXX_DEBUG=1ただし、デバッグ モードの XCode でデフォルトで設定されているプリプロセッサ フラグを削除すると、目的の結果/正しい動作が得られます。

これが私が話している単純な機能です。value は T 型のテンプレート変数です。int、double、float (動作しない)、char および string (動作する) についてテスト済みです。

template < typename T >
const std::string Attribute<T>::getValueAsString() const
{
 std::ostringstream stringValue;
 stringValue << value;
 return stringValue.str();
}

私が間違っていること、なぜこれが機能しないのか、またはこれが機能しなくなるためにプリプロセッサフ​​ラグが何をするのかについてのアイデアはありますか?

ありがとう!

4

1 に答える 1

0

既知の Apple バグ。以下と同じ質問:

C++ デバッグ ビルドが Snow Leopard X-Code Xcode 3.2.1 で壊れ、C++ 文字列が失敗する! c++ での int に関する ostringstream の問題

于 2009-12-10T17:47:59.440 に答える