移植できない名前の文字をファイルシステムで検索しました。そのためには、mbtowc 関数を使用してすべての文字をチェックします。
OSXで私が試した:
// OSX の場合
#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;
}
すべての文字に対して mbtows が 1 だけを返すのはなぜですか?
ヘリベルト