• 締切済み

CStringWが 使えないので

マルチバイト(Shift-JIS)を 使っているソースで                                                                                             DWORD   size;   CStringW   csw;;   csw =   filename;    size = csw.GetLength(); というコードで size の値は 以下のコードの  sizeと同じ値になりますか?                    DWORD size; CString cs; cs = filename; size = cs.GetLength() * sizeof(TCHAR); 表題にも書きましたが CStringW が、使えないので 宜しく お願い致します。                       

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> size の値は 以下のコードの  sizeと同じ値になりますか? Visual C++ 6.0にはCStringWはありません。 存在しないものとの比較はできませんので、同じ値になるかどうか以前の話です。

a_i_u_e_o_
質問者

補足

実は 上のコードを VC++6.0に 移植したいので、合っているかどうか下のように書いたのです。よろしくご指導のほど お願い致します。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> 表題にも書きましたが CStringW が、使えないので 宜しく お願い致します。 標準ライブラリにはCStringWというものはないので、使えなくても不思議ではありません。 > というコードで size の値は 以下のコードの  sizeと同じ値になりますか? CStringやCStringWの素性を明らかにすることが先決です。 (予想はつきますが、決めつけはよくありませんので...)

a_i_u_e_o_
質問者

補足

書きそびれて申し訳ありません。質問は VC++6.0 でのコードです。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>マルチバイト(Shift-JIS)を 使っているソース ということは、_MBCSが設定されている…ということでいいですかね? TCHAR.hによると… _UNICODEが定義されていれば、 typedef wchar_t TCHAR; _MBCSが定義されていれば typedef char TCHAR; どちらも定義されていないと… typedef char TCHAR; となります。 よって…… >CString cs; >size = cs.GetLength() * sizeof(TCHAR); の時のsizeof(TCHAR)はsizeof(char)になります。 CStringWだとsizeof(wchar_t)相当になるかと思われますが……。 # CString.GetLength()って終端の'\0'は含むんでしたっけね? 結果としては… >size の値は 以下のコードの  sizeと同じ値になりますか? ならない。と思います。 # まぁ、やってみるのが早いんでしょうけど。

関連するQ&A