char配列の変数を宣言するときに文字列を入れた状態で初期化する。
////////////////////////////////
//初期文字列代入
//
char pszSrc[] = {"abcdあいう"};
char*型の変数内の文字数を取得する。
////////////////////////////////
//文字数取得
//
size_t nLen1 = ::strlen(pszSrc); //変数内の文字列の文字数取得
size_t nLen2 = ::strlen("あいうえ"); //指定した文字列の文字数取得
変数へのコピーにはstrcpyではなく、より安全なstrcpy_sを利用する。
//////////////////////////////// //文字列代入 // char pszText[256]; ::strcpy_s(pszText,256,"あいうえABCD"); //直接代入 ::strcpy_s(pszText,256,pszSrc); //変数から代入実際のプログラミングではchar*型ではなくCStringもしくはCStringAにしておくほうが楽。
//////////////////////////////// //char*からCStringへの変換 // CString strText(pszText);CStringAというのはプロジェクトの設定に関わらず常にchar型の文字列操作クラスだ。
//////////////////////////////// //char*からCStringA(char型のCString)への変換 // CStringA strTextA1(pszText); //コンストラクタを利用 CStringA strTextA2 = pszText; //代入CStringWは常にWCHAR*型になる。 この操作は文字列のユニコード変換でもある。
//////////////////////////////// //char*からCStringW(WCHAR型のCString)への変換 // CStringW strTextW(pszText);char*型からWCHAR*型への変換。CStringWを利用しないユニコード変換はかなり面倒。
////////////////////////////////
//char*からWCHAR*へ変換
//
char pszChar[] = {"abcdあいう"};
WCHAR* pszWchar;
{
int nLen;
//Unicodeに必要な文字数の取得
nLen = ::MultiByteToWideChar(CP_THREAD_ACP,0,pszChar,-1,NULL,0);
pszWchar = new WCHAR[nLen];
if(pszWchar)
{
//変換
nLen = ::MultiByteToWideChar(CP_THREAD_ACP,0,pszChar,(int)::strlen(pszChar)+1,pszWchar,nLen);
if(nLen == 0)
{
delete pszWchar;
pszWchar = NULL;
}
}
}
//
//ここでWCHAR型のpszWcharを任意の処理で利用
//
delete pszWchar; //処理が終わったらdelete
