C 日本語文字列 新しいページはコチラ
提供: yonewiki
(→マルチバイト文字列、ワイド文字列) |
(→マルチバイト文字列、ワイド文字列) |
||
58行: | 58行: | ||
setlocale関数でも引数に文字列リテラルを与えるので、そこでワイド文字列を使うために_wsetlocale関数もあります。<br /> | setlocale関数でも引数に文字列リテラルを与えるので、そこでワイド文字列を使うために_wsetlocale関数もあります。<br /> | ||
_wsetlocale( LC_ALL, L("Japanese") );<br /> | _wsetlocale( LC_ALL, L("Japanese") );<br /> | ||
− | とします。こちらはwchar.hをインクルードするだけで使えるとのこと。 | + | とします。こちらはwchar.hをインクルードするだけで使えるとのこと。<br /> |
+ | wcslenは文字列の文字数をカウントする関数です。マルチバイト文字列版はstrlen関数になります。<br /> | ||
+ | <br /> | ||
<br /> | <br /> | ||
さらにwcher_t型を使うには、プリプロセッサでwchar.hを読み込まなくてはならず、<br /> | さらにwcher_t型を使うには、プリプロセッサでwchar.hを読み込まなくてはならず、<br /> | ||
65行: | 67行: | ||
<syntaxhighlight lang="cpp" line start="1"> | <syntaxhighlight lang="cpp" line start="1"> | ||
#include <iostream> | #include <iostream> | ||
− | #include<locale.h> | + | //#include<locale.h> wchar.hがインクルードされていれば、いらない。 |
#include<wchar.h> | #include<wchar.h> | ||
int main() { | int main() { | ||
78行: | 80行: | ||
さらにTCHAR型を使うには、プリプロセッサでtchar.hを読み込まなくてはならず、<br /> | さらにTCHAR型を使うには、プリプロセッサでtchar.hを読み込まなくてはならず、<br /> | ||
<nowiki>#include<tchar.h></nowiki>と記述しないといけないです。<br /> | <nowiki>#include<tchar.h></nowiki>と記述しないといけないです。<br /> | ||
− | + | setlocale関数も_tsetlocale関数として置き換えておくことができます。<br /> | |
+ | Unicodeセットのプロジェクト設定なら結局_wsetlocaleに置き換わるだけです。<br /> | ||
+ | 文字列リテラルは_T(" ")といった形式で記述しておきます。<br /> | ||
+ | _tcslen関数はwcslen関数と同じです。<br /> | ||
+ | このようにマルチバイト文字列版、ワイド文字列版、プロジェクト設定に従うTCHAR版の3つの関数があります。<br /> | ||
+ | cout関数にはTCHAR版が無いようなので、最初からstd::wcoutと記述するか、<br /> | ||
+ | wcout関数と_tcout関数が同じになるように定義する必要があります。実用的にはあまり使わない関数なので、あってもなくても困りません。<br /> | ||
+ | 従って、TCHAR版のプログラムは以下のようになります。 | ||
<syntaxhighlight lang="cpp" line start="1"> | <syntaxhighlight lang="cpp" line start="1"> | ||
#include <iostream> | #include <iostream> | ||
− | #include<locale.h> | + | //#include<locale.h> tchar.hがインクルードされていれば、いらない。 |
#include<tchar.h> | #include<tchar.h> | ||
int main() { | int main() { |