アプリ版:「スタンプのみでお礼する」機能のリリースについて

開発環境は VC++ 2008 Express Edition
あるDLLの関数で戻り値としてShiftJISの1文字が格納された

unsigned char SJis[2]

が返され,これを呼び出し側のプログラムで使っている文字列

std::string str

に順に追加していこうと思っています.
そこで,

unsigned char tmpSJis[3];
tmpSJis[0] = SJis[0];
tmpSJis[1] = SJis[1];
tmpSJis[2] = '\0';
str += std::string(tmpCode);

というコードを書いてループさせたのですが,

error C2440: '<function-style-cast>' : 'unsigned char *' から 'std::string' に変換できません。

というエラーが出てしまいうまく変換できません.
これを解決する方法はありませんか?

A 回答 (2件)

str.append(SJis + 0, SJis + 2);



で解決しませんか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます.

ただ,このコードの意味はよく分かりませんでしたが,
試してみたところうまく動作しました.
意味は自分で調べてみようと思います.

とてもシンプルなコードで書けたため,良回答20ptにしました(^-^)

お礼日時:2008/11/09 20:31

エラーコードそのままです。

std::stringと"unsigned"なcharは互換性が無いです。
代わりにtmpSJisをcharで宣言すればOK。コピーするときはmemcpyで。

あと、
  str += std::string(tmpCode);
この部分はこう書いても結果は同じになります。
  str += tmpCode;
    • good
    • 0
この回答へのお礼

回答ありがとうございます.

教えていただいたコードを試したところ,うまく動作することが確認できました.
勉強になりました.

良回答10ptにしました(^-^)

お礼日時:2008/11/09 20:33

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