重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

マルチバイト(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 が、使えないので 宜しく お願い致します。

                      

A 回答 (3件)

> size の値は 以下のコードの  sizeと同じ値になりますか?



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

この回答への補足

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

補足日時:2012/04/27 11:42
    • good
    • 0

> 表題にも書きましたが CStringW が、使えないので 宜しく お願い致します。



標準ライブラリにはCStringWというものはないので、使えなくても不思議ではありません。

> というコードで size の値は 以下のコードの  sizeと同じ値になりますか?

CStringやCStringWの素性を明らかにすることが先決です。
(予想はつきますが、決めつけはよくありませんので...)

この回答への補足

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

補足日時:2012/04/20 10:19
    • good
    • 0

>マルチバイト(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と同じ値になりますか?
ならない。と思います。
# まぁ、やってみるのが早いんでしょうけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!