は、はありオペレータのブースト/オプション/ optional_io.hppで宣言されたブースト::オプションについて< <、しかし、あなたはおそらくそれを含めていません。 (もしboost_typeを使用した場合、それはあなたのために追加されます)。もしそれが含まれていれば、空のオプションは " - "としてストリーミングされ、追加されたオプションは余分なスペース文字をストリームしてから値をストリームします。
ので、このコード:
#include <boost/optional/optional_io.hpp>
boost::optional<string> var1 = "value";
boost::optional<string> var2;
cout << " var1 = '" << var1 << "'\n";
cout << "*var1 = '" << *var1 << "'\n";
cout << " var2 = '" << var2 << "'\n";
は、この得られます
var1 = ' value'
*var1 = 'value'
var2 = '--'
が、含ま利回りなしで同じコードこのマークBの答えによって示唆されているように:
var1 = '1'
*var1 = 'value'
var2 = '0'
こと最初のケースで余分なスペースが私に混乱を引き起こしました。
'i.get()'はあなたの仲間です。 –
は、後半のバージョンでドキュメントを削除しましたか? –