Hi,<div><br></div><div>Recently I'm using taglib for my player to read/write metainfo,</div><div>However I can't understand why it use wstring instead of char* or string.</div><div>I think the charset issue should be solved by upper layer.</div>
<div><br></div><div>The only thing I need is a RAW tag string,</div><div>with RAW data,  I can check whether it is encoded by utf8, </div><div>or use user's choice</div><div>or even use mozilla's algorithm for charset detecting,</div>
<div>then I can use iconv() or mb*()/wc*() to convert it.</div><div><div><br></div><div>But I found it was hard to do this with taglib, </div><div>Currently I already have these code to approach that goal(to get raw string)</div>
<div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> 67 string WStringToStdString(const std::wstring& str)<br>
 68 {<br> 69     const size_t buflen = (str.size()+1) * MB_LEN_MAX;<br> 70     vector<char> buf(buflen);<br> 71     size_t ret = wcstombs(&buf[0], str.c_str(), buflen);<br> 72     return (ret != (size_t)-1) ? string(&buf[0], ret) : string("") ;<br>
 73 }<br> 74 <br> 75 string StringToStdString(const TagLib::String& str)<br> 76 {<br> 77     return ( str.isLatin1() || str.isAscii() ) ? <br> 78         str.to8Bit() : WStringToStdString(str.toWString());<br> 79 }</blockquote>
</div><div><br></div><div>StringToStdString() works fine in most cases, </div><div>but it depends on locale, and I do not want to call setlocale(LC_ALL, "").</div><div><br></div><div>So here is my second question, any simplest way to get RAW tag string?</div>
<div><br></div>-- <br>Best regards,<br>Yanhui Shen<br><br>
</div>