2013-08-08 1 views
0

프로덕션 코드베이스에서 사용할 수있을만큼 충분한 지 궁금합니다.wstring과 문자열 사이의 STL 문자열 변환

std::wstring s2w(const std::string& s) 
{ 
    std::wstring ws; 
    ws.assign(s.begin(), s.end()); 
    return ws; 
} 

std::string w2s(const std::wstring& w) 
{ 
    std::string s; 
    s.assign(w.begin(), w.end()); 
    return s; 
} 
+2

AFAIK, 아니요, 변환하지 않으므로 충분하지 않습니다 (좁게 만). 좁은 문자열 인코딩과 넓은 문자열 인코딩 사이에서 실제 변환을 수행해야합니다. 예를 들어,'codecvt '를 C++ 11에서 사용하면 아마도'wstring_convert'와 결합 될 것입니다. – dyp

+0

비슷한 질문 : http://stackoverflow.com/questions/7141260/compare-stdwstring-and-stdstring/7159944 – dyp

답변

0

아니요, 이것은 충분하지 않습니다.

다음 문자 (명확성을 위해 사용되는 숫자 값) { 0x41, 0x1243, 0x62 }을 (즉, 유니 코드를 사용하는 경우 'B'다음 ETHIOPIC 음절 QAA, 다음에 'A'이다)를 포함하는 wstring을 고려하십시오.

루틴을 사용하여 string으로 변환하면 { 0x41, 0x43, 0x42 } 또는 'ACb'가 포함 된 시퀀스가됩니다. 아마도 당신이 기대 한 것이 아니었을 것입니다.

DyP가 말했듯이 - 변환을 수행하지 않고 축소 만합니다.