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() {

2013年11月20日 (水) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス