FreeBASIC マニュアルのトップに戻る

FreeBASIC Wstring (文字)

目次→言語リファレンス→変数とデータ型→標準のデータ型→文字型→WSTRING (文字)←オリジナル・サイト
目次→ランタイム・ライブラリー参考→文字列関数WSTRING (文字)←オリジナル・サイト

WSTRING (文字) 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

★このページの html は、UTF-8 です。★
標準のデータ型: ワイド文字列
(英数字のように、1バイトではなく、日本語のようにマルチ・バイトで表現される文字の文字列)

構文:
dim variable as Wstring * size
dim variable as Wstring PTR

記述:
Wstring は、広い文字の、固定サイズの配列で、コンパイル時にサイズが分かっていれば、決してあふれることはありません。
これは記述子を持っていません。そして、これがポインターでなければ決してリサイズされません。そして、Allocate/Reallocate/Deallocate は、直接使われます。
変数が固定の size を持っているとき、FreeBASICは、内容を size - 1 の長さに切り捨てることによって、代入で生じうる桁あふれを避けています。

文字列の終わりは、FreeBASIC の文字列処理関数により自動的に追加される文字 0 により明示されます。
このため、文字 0 は、Wstring の一部であってはなりません。さもないと、内容は切りつめられてしまいます。
文字列が作成される時に、文字 0 が付加されます。そして、長さは、文字列で、最初のヌル文字を走査することによって計算されます。

Wstring で、Len は含まれた文字列のサイズを返します。そして、Sizeof は、Wstring に割り当てられるスペースを返します。
Sizeof は、間接参照されたポインターや Byref 関数引数ではなく、サイズがコンパイラに知られている(すなわち固定サイズの Wstring 変数が直接渡される)場合にかぎり、働きます。

このタイプは、非ラテン文字をサポートするために提供します。
Left のような、どんな固有の文字列関数も、また、どんな文字列演算子も、Wstring と一緒に使うことができます。

ソース・ファイルを処理するとき、FreeBASIC は、ASCII ファイルを、ユニコード・エスケープ文字列(\u)、UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE で解析できます。ただし、Byte Order Mark(BOM) 付きで保存されている場合に限ります。

FreeBASIC テキストファイル関数は、ファイルを開くときに encoding が指定されると、異なるエンコーディングのユニコード・ファイルを、読み書きできます。 テキストは、自動的に、読み込むときに内部のエンコーディングに変換され、書き出すときにファイル・エンコーディングに変換戻しされます。

sizeof( Wstring ) は、現在のプラットホームの Wstring 文字によって使われたバイト数を返します。

例:
Dim As WString * 13 str1 => "hello, world"
Print str1
Print Len(str1)    '12 と表示されます。それが含む文字列の長さを返します。
Print SizeOf(str1) '13 と表示されます。 * sizeof(wstring), 変数で使われるバイト数
Sleep

Dim As WString Ptr str2
str2 = Allocate( 13 * Len(WString) )
*str2 = "hello, world"
Print *str2
Print Len(*str2)      '12 と表示されます。それが示す文字列の長さを返します。
Sleep


下は、MessageBox に、日本語を表示する例です。このコードは、UNICODE で保存して下さい。
   MessageBox の引数については、下記を参照下さい。
   Win32API メッセージボックス

#ifdef __FB_WIN32__
# define unicode
# include once "windows.bi"
#endif

const LANG = "Japanese"

	dim helloworld as wstring * 20 => "こんにちは 世界!"

	print """Hello World!"" in "; LANG; ": "; helloworld

#ifdef __FB_WIN32__
	messagebox( 0, helloworld, """Hello World!"" in " & LANG & ":", MB_OK )
#endif


下は、MessageBox に、中国語を表示する例です。このコードは、UNICODE で保存して下さい。

#ifdef __FB_WIN32__
# define unicode
# include once "windows.bi"
#endif

const LANG = "Chinese"
	dim helloworld as wstring * 20 => "你好,世界!"

	print """Hello World!"" in "; LANG; ": "; helloworld

#ifdef __FB_WIN32__
	messagebox( 0, helloworld, """Hello World!"" in " & LANG & ":", MB_OK )
#endif

プラットホーム差:
 wstringsのサポートは、そのプラットホームで利用可能な Cランタイム・ライブラリに依存します。内部形式は、異なるかもしれません。


方言差:

QBからの違い:

参照:
標準のデータ型 に戻る
文字列関数 に戻る

←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2016-11-18 04:27:33
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承