- ベストアンサー
unsigned char SJis[2]からstd::stringに変換
開発環境は 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' に変換できません。 というエラーが出てしまいうまく変換できません. これを解決する方法はありませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
str.append(SJis + 0, SJis + 2); で解決しませんか?
その他の回答 (1)
- JagdPandar
- ベストアンサー率53% (29/54)
エラーコードそのままです。std::stringと"unsigned"なcharは互換性が無いです。 代わりにtmpSJisをcharで宣言すればOK。コピーするときはmemcpyで。 あと、 str += std::string(tmpCode); この部分はこう書いても結果は同じになります。 str += tmpCode;
お礼
回答ありがとうございます. 教えていただいたコードを試したところ,うまく動作することが確認できました. 勉強になりました. 良回答10ptにしました(^-^)
お礼
回答ありがとうございます. ただ,このコードの意味はよく分かりませんでしたが, 試してみたところうまく動作しました. 意味は自分で調べてみようと思います. とてもシンプルなコードで書けたため,良回答20ptにしました(^-^)