w nowym projekciku który właśnie zaczynam postanowiłem wykorzystać parę featursów z C++0x - m. in. obsługę Unicode. W tym celu napisałem sobie klasę dziedziczącą po std::basic_string, używającą UTF-16, z dodanymi metodami do konwersji na UTF-8 i UTF-32. I właśnie z tą konwersją mam problem:
Kod: Zaznacz cały
U8String UString::to_utf8() const
{
typedef std::codecvt<char16_t, char, std::mbstate_t> Cvt;
const Cvt& cvt=std::use_facet<Cvt>(std::locale());
char* res=new char[this->size()*2+1];
const char16_t* lastConvChar;
char* lastChar;
std::mbstate_t state;
cvt.out(state, this->c_str(), (const char16_t*)(this->c_str()+this->size()*sizeof(char16_t)), lastConvChar,
&res[0], &res[this->size()*2], lastChar);
return U8String(res, (size_t)(lastChar-res));
}
Piszę pod g++ 4.5.