wcsncpy_sでのエラーについて

[戻る]
初心者マルコ 2007/03/28(水) 11:14:23
開発環境はVC++2005 MFCです。
初心者です。

下記関数にて
'wcsncpy_s' : 3 番目の引数を 'CString' から 'const wchar_t *' に変換できませ
ん。
というエラーが出てしまいます。

wcsncpy_s(fileVerData.cFileNo, 
          FILE_VERSION_LEN, 
          StrClass, 
          (FILE_VERSION_LEN - 1));

解決方法がわかりません。どのたか教えて頂けないでしょうか。

Blue 2007/03/28(水) 11:22:50
文字セットを

「マルチバイト文字セットを使用する」

にすると、CStringはchar型の配列(Shift_JISコードの文字列)として内部で
扱います。

当然

Shift_JISコード文字列 ≠ Unicode文字列

であるため、変換する必要があります。

変換方法はいろいろあるのでプログラムに適したものを使うといいでしょう。

方法 : さまざまな文字列型間で変換する  
http://msdn2.microsoft.com/ja-jp/library/ms235631(VS.80).aspx
# 一番簡単なのは comdef.h の _bstr_tクラスを使う方法かな。

初心者マルコ 2007/03/28(水) 11:33:25
申し訳ありません。理解できませんでした。

初心者マルコ 2007/03/28(水) 11:37:54
本当に困っております。
ずうずうしいですが、解決方法をご教授願えませんでしょうか。

Blue 2007/03/28(水) 11:43:03
理解しようとしない人に丁寧に教えるつもりはないです。
動けばそれでいいなら

#include <comdef.h>


wcsncpy_s(fileVerData.cFileNo, 
          FILE_VERSION_LEN, 
          _bstr_t(StrClass), 
          (FILE_VERSION_LEN - 1));


でオワ。

初心者マルコ 2007/03/28(水) 11:59:19
[[解決]]
ありがとうございました。他のやり方を行いました。

Blue 2007/03/28(水) 12:00:42
> 他のやり方を行いました。
hala?

2007/03/28(水) 14:57:35
理解しなかったら永遠に初心者、もしくは永遠に低技術のまま、使えない人間に
なるけどね…。
「他のやり方」ってことは、マルチポストしてたんでしょうかねぇ。
解決したらその方法を書けってなってるのに。
全く。

2007/03/28(水) 15:02:09
別に『ぬ』が気にすることでもないと思うがね、ほっとけば

初心者マルコ 2007/03/28(水) 18:41:01
マルチポストって、複数の掲示板にってことですよね。
そういうことではありません。
あまりに簡単に解決、文字列操作をする必要なく解決してしまったので・・・・
他の人のソースを参考にしてたので、コンパイルを無理やり通そうとしていたのです
が、別に文字列意識せずにmemcpyで問題なかったので・・・・
すみません、お騒がせ致しました。

ちょっと『ぬ』さんの発言には怒りを覚えますが、こちらの不手際でもありますの
で・・・

2007/03/28(水) 19:01:19
>『ぬ』さんの発言には怒りを覚えますが
「理解できなかった。」で済ませるのが信じられなくて言い過ぎました。
すいません。

古いスレッドには追加発言できません。