TCHAR型文字列での終末文字は?

解決


ウルトラハイパー初心者  2007-09-04 16:51:18  No: 66192

たいへん初歩的なことで恥ずかしいのですが、わからないので、質問します。

char型では、文字列の末尾には
mych[5] = '\0';
というように、'\0'をつけますが、
ユニコードライブラリを使った場合に、TCHAR型で、
文字列の末尾には、どのような文字をつけたらいいのでしょうか。

TCHAR tch[5];
tch[4] = '\0';

としても、5文字目より後に、ヘンな文字が残ってしまいます。
試しに、tch[4] = L"\0";とやってみましたが、やっぱりビルドが通りませんでした。

よろしくお願いします。


wclrp ( 'o')  2007-09-04 17:23:58  No: 66193

TCHAR型ってユニコードとは限らないよ。
やっぱりユニコードにするのやめたくなったときとか直ぐ変えられるように
マクロ定義で変更してコンパイルできるようにしているもの。
実際は簡単じゃないけど。

ユニコード前提ならwchar_tとかWCHARとかじゃない。
WCHAR wch[5];
wch[4] = L'\0';


Blue  2007-09-04 17:33:29  No: 66194

TCHAR型を使うときは、TEXTマクロおよび_Tマクロを使うようにしましょう。

TCHAR tch[5];
tch[4] = TEXT('\0');

参考
http://www.ruche-home.net/program/tips/tchar.php

>5文字目より後に、ヘンな文字が残ってしまいます。
は、当然なのでは?
5文字しか管理していないので、それ以降に文字を入れるという処理が
あってはおかしいですし。
(文字列としては'\0'が出ればそれ以降に何が入っていようとそこで終わりですので。)


ウルトラハイパー初心者  2007-09-05 18:46:42  No: 66195

ありがとうございました。

解決しました。

ユニコードライブラリを使う場合は、'' が使えないと勝手に思い込んでいたお粗末でした。

たいへん失礼いたしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加