C 文字列操作 新しいページはコチラ
提供: yonewiki
(→文字列コピー) |
(→文字列コピー) |
||
321行: | 321行: | ||
… | … | ||
//_mbscpy_s(ppucStr2[i], sizecStr0,reinterpret_cast<unsigned char*>(ppcStr1[i]));//ココ! | //_mbscpy_s(ppucStr2[i], sizecStr0,reinterpret_cast<unsigned char*>(ppcStr1[i]));//ココ! | ||
− | _mbsncpy_s(ppucStr2[i], sizecStr0,reinterpret_cast<unsigned char*>(ppcStr1[i]), | + | _mbsncpy_s(ppucStr2[i], sizecStr0,reinterpret_cast<unsigned char*>(ppcStr1[i]), _mbslen(reinterpret_cast<unsigned char*>(ppcStr1[i])));//ココ! |
+ | |||
… | … | ||
… | … | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | と、4つの引数をとるように記述します。第4引数が出力する最大文字の配列数です。出力する文字数と考えることもできます。<br /> | |
− | + | マルチバイト文字の場合には出力する文字数を指定できるのは効果的で、先頭から何バイト目で区切れば日本語文字が分断されないかの判断も<br /> | |
− | + | してくれながらの出力となります。この出力する文字数をあえてバイト単位で指定する_mabsnbcpy_sもあります。<br /> | |
− | + | ただし、コピー先の文字列の配列はstrlenのようなバイト数分で準備する必要があることに注意が必要です。<br /> | |
+ | 出力文字数を指定する場合は文字列全体の長さではなく、指定した文字数で必要な文字列バイト数を算出しておいて、メモリを確保するように<br /> | ||
+ | 処理を記述するのが良いかもしれません。<br /> | ||
+ | ここでは強制キャストを使いましたが、もともとの文字列がunsigned charとして定義されているものをコピーするときに_mbs系の文字列コピーを<br /> | ||
+ | 利用するというのが自然な使い方になります。<br /> | ||
=='''文字列連結'''== | =='''文字列連結'''== |