C言語 ワイド文字列からマルチバイト文字列に変換 - stdlib.h - [ wcstombs ]
2008.11.09 Sunday | by LRESULT
ワイド文字列からマルチバイト文字列に変換するには、wcstombs()を使います。
※ ワイド文字・マルチバイト文字に関しては、こちら。
※ wcstombs()は、ロケールのLC_CTYPEの設定に依存する為、
日本語のマルチバイト文字を扱う際には、setlocale( LC_CTYPE, "jpn" )
という設定が必要になります。
書式 | int wcstombs( char *ms, const wchar_t *ws, size_t n ) |
---|---|
機能 | ワイド文字列からマルチバイト文字列に変換 |
引数 | char *ms : 変換されたマルチバイト文字列を格納するポインタ const wchar_t *ws : 変換元のワイド文字列 size_t n : マルチバイト文字のバイト数を指定 |
戻り値 | 成功すると、変換したマルチバイト文字列のバイト数を返し、 失敗すると、-1を返します。 |
C言語 ワイド文字からマルチバイト文字に変換 - stdlib.h - [ wctomb ]
2008.11.09 Sunday | by LRESULT
ワイド文字からマルチバイト文字に変換するには、wctomb()を使います。
※ ワイド文字・マルチバイト文字に関しては、こちら。
※ wctomb()は、ロケールのLC_CTYPEの設定に依存する為、
日本語のマルチバイト文字を扱う際には、setlocale( LC_CTYPE, "jpn" )
という設定が必要になります。
書式 | int wctomb( char *s, wchar_t wc ) |
---|---|
機能 | ワイド文字からマルチバイト文字に変換 |
引数 | char *s : 変換したマルチバイト文字を格納するポインタ wchar_t wc : 変換元のワイド文字 |
戻り値 | 成功すると、マルチバイト文字のバイト数を返し、 失敗すると、-1を返します。 |
C言語 マルチバイト文字列からワイド文字列に変換 - stdlib.h - [ mbstowcs ]
2008.11.08 Saturday | by LRESULT
マルチバイト文字列からワイド文字列に変換するには、mbstowcs()を使います。
マルチバイト文字とは、半角の「ABC123」という1バイト文字と、
全角の「あいうえお」という2バイト文字が混在した文字で、Shift_JISやEUC-JPという
文字セットがこれにあたります。
また、ワイド文字とは、2バイトで全ての文字が表現されている文字で、
Unicodeと呼ばれる、UCS-2やUTF-16(一部例外あり)が、これにあたります。
ワイド文字型を表す、wchar_t型は、C言語では、unsigned short型で定義され、
C++では、wchar_t型が予約語として扱われます。
(gccでは、wchar_t型は通常4バイトで強制2バイトオプションもあるらしい)
※ mbstowcs()は、ロケールのLC_CTYPEの設定に依存する為、
日本語のマルチバイト文字を扱う際には、setlocale( LC_CTYPE, "jpn" )
という設定が必要になります。
書式 | int mbstowcs( wchar_t *ws, const char *ms, size_t n ) |
---|---|
機能 | マルチバイト文字列からワイド文字列に変換 |
引数 | wchar_t *ws : 変換したワイド文字列を格納するポインタ const char *ms : 変換元のマルチバイト文字列 size_t n : ワイド文字の文字数を指定 |
戻り値 | 成功すると、変換したワイド文字の文字数を返し、 失敗すると、-1を返します。 |
C言語 マルチバイト文字からワイド文字に変換 - stdlib.h - [ mbtowc ]
2008.11.07 Friday | by LRESULT
マルチバイト文字からワイド文字に変換するには、mbtowc()を使います。
マルチバイト文字とは、半角の「ABC123」という1バイト文字と、
全角の「あいうえお」という2バイト文字が混在した文字で、Shift_JISやEUC-JPという
文字セットがこれにあたります。
また、ワイド文字とは、2バイトで全ての文字が表現されている文字で、
Unicodeと呼ばれる、UCS-2やUTF-16(一部例外あり)が、これにあたります。
ワイド文字型を表す、wchar_t型は、C言語では、unsigned short型で定義され、
C++では、wchar_t型が予約語として扱われます。
(gccでは、wchar_t型は通常4バイトで強制2バイトオプションもあるらしい)
※ mbtowc()は、ロケールのLC_CTYPEの設定に依存する為、
日本語のマルチバイト文字を扱う際には、setlocale( LC_CTYPE, "jpn" )
という設定が必要になります。
書式 | int mbtowc( wchar_t *wc, const char *mc, size_t n ) |
---|---|
機能 | マルチバイト文字からワイド文字に変換 |
引数 | wchar_t *wc : 変換したワイド文字を格納するポインタ const char *mc : 変換元のマルチバイト文字 size_t n : 変換するバイト数 |
戻り値 | 成功すると、マルチバイト文字のバイト数を返し、 失敗すると、-1を返します。 |
C言語 マルチバイト文字のバイト数を取得 - stdlib.h - [ mblen ]
2008.11.06 Thursday | by LRESULT
マルチバイト文字のバイト数を取得するには、mblen()を使用します。
マルチバイト文字とは、半角の「ABC123」という1バイト文字と、
全角の「あいうえお」という2バイト文字が混在した文字で、Shift_JISやEUC-JPという
文字セットがこれにあたります。
※ mblen()は、ロケールのLC_CTYPEの設定に依存する為、
日本語のマルチバイト文字を扱う際には、setlocale( LC_CTYPE, "jpn" )
という設定が必要になります。
書式 | int mblen( const char *s, size_t n ) |
---|---|
機能 | マルチバイト文字の長さを取得 |
引数 | const char *s : マルチバイト文字 size_t n : 判定するバイト数 |
戻り値 | 成功すると、マルチバイト文字のバイト数を返し、 失敗すると、-1を返します。 |
MB_CUR_MAX | 現在のロケールのLC_CTYPE設定で、 マルチバイト文字1文字に必要な、最大バイト数 |
---|---|
MB_LEN_MAX | 全てのロケールで、 マルチバイト文字1文字に必要な、最大バイト数 |
C言語 構造体のバイナリサーチ(二分探索) - stdlib.h - [ bsearch ]
2008.11.05 Wednesday | by LRESULT
バイナリサーチ(二分探索)を行うには、bsearch()を使います。
今回は、応用編として構造体を対象としたバイナリサーチをやってみます。
※ バイナリサーチを行うには、まず検索対象の要素が、
昇順でソートされている必要があります。
※ バイナリサーチの基本編は、こちら。
書式 | void* bsearch( const void *key, const void *base, size_t n, size_t size, int (*comp)(const void *c1, const void *c2 ) ) |
---|---|
機能 | バイナリサーチ(二分探索)を行う |
引数 | const void *key : 検索する値 const void *base : 検索する配列 size_t n : 配列要素の個数 size_t size : 配列要素のサイズ int (*comp)(const void *c1, const void *c2 ) ) : 比較関数 |
戻り値 | 検索が成功した場合は、要素のポインタを返し、 発見出来なかった場合は、NULLを返します。 |
c1 < c2 | 負の値 |
---|---|
c1 == c2 | 0 |
c1 > c2 | 正の値 |
※ 比較関数の戻り値には、上記の規則があります。
C言語 構造体のクイックソート(配列要素の並び替え) - stdlib.h - [ qsort ]
2008.11.05 Wednesday | by LRESULT
クイックソート(配列要素の並び替え)には、qsort()を使います。
今回は、応用編の構造体を対象としたクイックソートをやってみます。
※ qsort()の基本編は、こちら。
書式 | void qsort( void *base, size_t n, size_t size, int (*comp)( const void *c1, const void *c2 ) ) |
---|---|
機能 | クイックソート(配列要素の並び替え)を行う |
引数 | void *base : 並び替えを行う配列 size_t n : 配列要素の個数 size_t size : 配列要素のサイズ int (*comp)( const void *c1, const void *c2 ) : 比較関数 |
戻り値 | なし |
c1 < c2 | 負の値 |
---|---|
c1 == c2 | 0 |
c1 > c2 | 正の値 |
※ 比較関数の戻り値には、上記の規則があり、降順にするには不等号を逆にします。
C言語 バイナリサーチ(二分探索) - stdlib.h - [ bsearch ]
2008.11.05 Wednesday | by LRESULT
バイナリサーチ(二分探索)を行うには、bsearch()を使います。
バイナリサーチを使うと、配列要素内を検索する事が出来ます。
※ バイナリサーチを行うには、まず検索対象の要素が、
昇順でソートされている必要があります。
※ 構造体のバイナリサーチは、こちら。
書式 | void* bsearch( const void *key, const void *base, size_t n, size_t size, int (*comp)(const void *c1, const void *c2 ) ) |
---|---|
機能 | バイナリサーチ(二分探索)を行う |
引数 | const void *key : 検索する値 const void *base : 検索する配列 size_t n : 配列要素の個数 size_t size : 配列要素のサイズ int (*comp)(const void *c1, const void *c2 ) ) : 比較関数 |
戻り値 | 検索が成功した場合は、要素のポインタを返し、 発見出来なかった場合は、NULLを返します。 |
c1 < c2 | 負の値 |
---|---|
c1 == c2 | 0 |
c1 > c2 | 正の値 |
※ 比較関数の戻り値には、上記の規則があります。
C言語 クイックソート(配列要素の並び替え) - stdlib.h - [ qsort ]
2008.11.04 Tuesday | by LRESULT
クイックソート(配列要素の並び替え)を行うには、qsort()を使います。
※ 構造体のクイックソートは、こちら。
書式 | void qsort( void *base, size_t n, size_t size, int (*comp)( const void *c1, const void *c2 ) ) |
---|---|
機能 | クイックソート(配列要素の並び替え)を行う |
引数 | void *base : 並び替えを行う配列 size_t n : 配列要素の個数 size_t size : 配列要素のサイズ int (*comp)( const void *c1, const void *c2 ) : 比較関数 |
戻り値 | なし |
c1 < c2 | 負の値 |
---|---|
c1 == c2 | 0 |
c1 > c2 | 正の値 |
※ 比較関数の戻り値には、上記の規則があり、降順にするには不等号を逆にします。