파일 시스템에서 휴대용이 아닌 이름의 charcters를 검색했습니다. 이를 위해 mbtowc 함수를 사용하여 모든 문자를 검사하십시오.mbtowc는 osx에서 항상 1 바이트를 반환합니다.
는 OSX에 내가 시도 :
// 왜 모든 문자 만 1 mbtows 반환하지
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
string s1 = "Ä";
size_t len = s1.length(); // will be 2, ok
const char* s1c = s1.c_str(); // 0xC3 0x84 0x00, ok
char a = s1[0]; // 0xc3, ok
char b = s1[1]; // 0x84, ok
mbtowc(NULL,NULL,0); // reset
wchar_t wc;
int mb_len = mbtowc(&wc,s1c,len); // mb_len = 1, wc=0xc3 00 00 00
// why only one byte?
// how can i get the right Wchar???
char mb2[10];
int mblen2 = wctomb(mb2,wc); // mblen2 = 1; mb2 = 0xC3
string s2 = string(mb2); // len = 1 only 0xC3
return 0;
}
OSX
에?Heribert
덕분에, 여기 말했다. – user1854272