Boost logo

Boost :

From: Mihalca Bobby (bobbymihalca_at_[hidden])
Date: 2005-04-20 11:29:27



I needed some std::string <-> std::wstring conversion and after

searching web for something like this found nothing except a thread

with this name here on boost.

So I made one myself, maybe if you think is worth something you will

include it in boost.


Here is the code:


template<class _RetString,class _SourceString>
_RetString string_cast(const _SourceString &src,std::locale Loc=std::locale())
 _RetString dst;
 typedef _SourceString::value_type _SrcValType;
 typedef _RetString::value_type _DstValType;

 typedef std::codecvt<_SrcValType,_DstValType,mbstate_t> CodeCvt;
 const CodeCvt & cvt= use_facet<CodeCvt>(Loc);
 std::mbstate_t state = std::mbstate_t();
 _SrcValType * next_in=NULL;
 _DstValType *next_out=NULL;
  switch(cvt.out(state, src.c_str(), src.c_str() + src.size(),next_in,const_cast<_DstValType *>(dst.c_str()),const_cast<_DstValType *>(dst.c_str())+dst.size(), next_out))
  case std::codecvt_base::ok:
  case std::codecvt_base::partial:
  case std::codecvt_base::error:
   // not much we can do here but guess:
  case std::codecvt_base::noconv:
   return dst;
 return dst;

and I used like this:


std::string strA = string_cast<std::string>( std::wstring(L"dummy example") );



Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around

Boost list run by bdawes at, gregod at, cpdaniel at, john at