を解答フォームポインデクスターに加えて、メソッドhereからboost::lexical_cast
の特殊バージョンでラップすることができます。
namespace boost {
template<>
bool lexical_cast<bool, std::string>(const std::string& arg) {
std::istringstream ss(arg);
bool b;
ss >> std::boolalpha >> b;
return b;
}
template<>
std::string lexical_cast<std::string, bool>(const bool& b) {
std::ostringstream ss;
ss << std::boolalpha << b;
return ss.str();
}
}
そして、それを使用します。私は個人的にこのアプローチを気に入っ
#include <iostream>
#include <boost/lexical_cast.hpp>
//... specializations
int main() {
bool b = boost::lexical_cast<bool>(std::string("true"));
std::cout << std::boolalpha << b << std::endl;
std::string txt = boost::lexical_cast<std::string>(b);
std::cout << txt << std::endl;
return 0;
}
それは特別なコードを隠しているため(例えば、 boolとの間の変換にはLocaleBool
またはto_bool(...)
を使用してください)。
あなた自身の質問への回答の投稿に関する意見は混在していますが、回答は回答として投稿してください。 – robert
回答**を回答**として投稿してください。 –
編集中! (何らかの理由であなたのコメントが電子メールで送られてきませんでした) – poindexter