//ワイド文字列コピー WCHAR oomoto = L"大元"; WCHAR aite = [20]; wcscpy( aite, oomoto ); //______________________________________ //ワイド文字列 定義後の代入 WCHAR* hensu = new WCHAR[100]; wcsncpy_s( hensu, 100, L"", 0 ); // hensu = "" //______________________________________ //ワイド文字列 長さ WCHAR* SrcData; i = wcslen( SrcData ); //______________________________________ //ワイド文字列への末尾追加(連結) WCHAR* oomoto = new WCHAR[100]; WCHAR* tsuika = new WCHAR[2]; wcscat( oomoto, tsuika ); // oomoto = oomoto & tsuika //______________________________________ //ワイド文字列内検索(INSTR) WCHAR* oomoto = L"あいうえお"; int index; //先頭から検索 WCHAR ch = L‘う’; WCHAR* p = wcschr(oomoto, ch); index = p – oomoto; //indexには先頭をゼロとして、2が入る //pには「うえお」が入る //末尾から検索 WCHAR* p = wcsrchr(oomoto, L‘え’); index = p – oomoto; //indexには先頭をゼロとして、3が入る //pには「えお」が入る //______________________________________ //マルチバイト文字列からワイド文字列へのコピー char oomoto[] = "あいうえお"; WCHAR* aite = new WCHAR[20]; //まずは長さ調査 lens = mbstowcs( NULL, oomoto, 0 ); //長さ分をコピー lens = mbstowcs( aite, oomoto, lens + 1 );
月別アーカイブ: 2008年8月
基本
//WinMainでの引数(argc,argv) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { for(i=1; i < __argc; i++) printf(“%s\n", __argv[i]); } //______________________________________ //ロケーション設定 setlocale(LC_ALL, “Japanese_Japan.932");
Char,Unicode,ワイド文字
ASCII文字コード:
ー0x00-0x7fまでの128文字(7ビット)
シングルバイト文字セット(SBCS):
-8ビット(1バイト)、ASCII文字
ダブルバイト文字セット(DBCS):
-16ビット(2バイト)
-C言語ではシングルバイト文字もダブルバイト文字もchar型の配列
マルチバイト文字セット(MBCS):
-MSDNの定義では1or2バイト文字
-上記シングル、ダブルは、ここに含まれる
-Shift-JISはここに属する
ワイド文字セット:
-常に16ビット(2バイト)
ーワイド文字はchar型では無い
ーワイド文字はwchar_t型(Unicode)
______________________________________
リテラル文字
シングルバイト文字セット
const char* str = “TEST”;
ダブルクォーテーションで囲まれた文字列を「リテラル文字」と呼ぶ
マルチバイト文字セット
const char* str = “日本語”;
ワイド文字セット
const wchar_t* str = L”先頭にLが必須”;
______________________________________
マルチバイト文字でもUnicodeでも、コードを変えずに使用する方法:
const _TCHAR* str = _T(“これなら自動”);
ーMicrosoft固有の仕様
ーマルチバイト文字、ワイド文字(Unicode)どちらでもOk
ー仕組み:Unicodeの場合_TCHARをwchar_t型に、Unicode以外はChar型にコンパイル時に置換
______________________________________
文字列変換:
マルチバイト文字 → ワイド文字(Unicode)
MultiByteToWideChar関数(Windows API関数)
mbstowcs関数(Cランタイムライブラリ)
ワイド文字(Unicode) → マルチバイト文字
WideCharToMultiByte関数(Windows API関数)
wctomb関数(Cランタイムライブラリ)