Windowsプログラミングでのcharの扱い方

char配列の変数を宣言するときに文字列を入れた状態で初期化する。
////////////////////////////////
//初期文字列代入
//
char	pszSrc[] = {"abcdあいう"};
char*型の変数内の文字数を取得する。
////////////////////////////////
//文字数取得
//
size_t	nLen1 = ::strlen(pszSrc);		//変数内の文字列の文字数取得
size_t	nLen2 = ::strlen("あいうえ");	//指定した文字列の文字数取得
変数へのコピーにはstrcpyではなく、より安全なstrcpy_sを利用する。
////////////////////////////////
//文字列代入
//
char	pszText[256];
::strcpy_s(pszText,256 * sizeof(char),"あいうえABCD");	//直接代入
::strcpy_s(pszText,256 * sizeof(char),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

カテゴリー「文字列操作」 のエントリー