• ベストアンサー

UNICODE環境でCStringをstd::stringにコピーしたいのですが

UNICODE環境でCStringをstd::stringにコピーしたいのですがどうすればよいのでしょうか? どなたか助けてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

std::wstring (wchar_t/UNICODE用)ではなくて std::string ですか。 であれば、wcstombs や WideCharToMultiByte 等を使えばいいでしょう。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CStringとString

    MFCプログラミングでは、CStringがよく使われていますが、Stringクラスも使用することはできますよね!? 普段使うにはどっちがいいのでしょうか? CStringは、Stringを機能拡張したものと考えていいのでしょうか?

  • c++のstd::stringについて

    VC++2008でフォームアプリケーションを作成しています。 シリアルポートから受け取った文字列の一部を抜き出して処理をするため,VBではmid関数に相当するような機能として,std::stringを使用しようとしています。 しかし, std::string str("ABC" ,1,2); とした場合は『BC』が問題なく返ってきましたが, std::string str(recieveddata ,1,2); のように,文字列の部分を変数にしたら,ビルドエラーになってしまいます。(ポインタ?を理解する必要があるのでしょうか?) どのようにすれば,VBのmid相当の機能を実現できるでしょうか?

  • Visual C++ 2008 Express EditionでCString

    Visual C++ 2008 Express Editionでは、CStringを使用できない のでしょうか? 使用できないのであれば、CStringを引数に している関数は全て使用不能ということですか? 試しにstringにしてみましたが以下のエラーになりました。 'std::string' から 'LPCWSTR' に変換できません。

  • std::stringの継承

    #include <iostream> #include <string> class test : public std::string{ }; int main() { test tmp; tmp = "aaa"; } tmp = "aaa";ですが test::operator =(char *) が定義されていないとでますが何故なんでしょうか? string(basic_string)でoperator=が定義されていると思うのですが、 演算子の定義は継承されないのでしょうか。

  • double型をstd::string型に変換するには...

    VC++ .NETです。 double型をstd::string型に変換するには どうすれば、よいですか?

  • 数値を std::string に変換

    C++で 数値を std::string に変換 する方法はあるのでしょうか? << や += などやってみましたができませんでした。 やはりC同様に snprintf() などを使うしかないのでしょうか?

  • std::stringを別のコンパイラで使うには?

    例えばあるコンパイラでコンパイルしたコードの中に以下のような関数があったとします。 void func( std::string& str ); この関数をプラグインとか、DLLとか、外部に公開したいのです。 しかし、std::stringの実装方法はコンパイラ付属のライブラリに依存するため、プラグインを書く人が別のライブラリを使用した場合、致命的なエラーが発生する可能性があると思います。 (1)できればライブラリを指定したくない (2)std::stringを自作するような再発明は避けたい (3)全てをchar*(wchar_t*)で構成するようなことは避けたい この3つの要件を満たす解はあるのでしょうか? std::stringに関連するソースだけ(再配布可能なら)配布するとか? しかし、配布していいとは思えませんので、条件2をあきらめて自作しようかなと考えています。もしくは、条件3をあきらめようかと考えています。 <質問1>上記条件を満たす解はありますか? <質問2>自作する場合、どのようにコードを少なくしますか? <質問3>そもそもこのような事態に陥ってしまった時点で設計に問題があるのでしょうか?同様の問題に直面した場合、どのように対処されましたか? 以上 よろしくお願いします

  • std::wstringのメモリリークについて教えてださい

    C++でプログラムを書いていたところメモリリークしているのを発見しました。 そこでなんとかメモリリークしている箇所を特定してみたのですが、なんとstd::wstringとstd::stringがメモリリークしているようです。 (UNICODEとマルチバイト文字に対応させるため両方でプログラムかいています) ローカル変数で関数さえ抜ければメモリからは消滅するはずのstd::wstringやstd::stringがメモリリークしているのは何か原因でもあるのでしょうか? よろしくおねがいします。

  • WindowsのUNICODEをJavaのStringに変換したい

    Windowsからソケット通信でUNICODE(little endian)文字列を受け取っています。 bufferはバイト配列で格納されているとして String text= new String(buffer);とか String text= = new String(buffer,"MS932");とか String text= new String(buffer,0,長さ,"UNICODE"); などとするのですが漢字コードが化けてしまいます。 エンディアン並びを逆にしたりしましたがやはり同じです。 半角の場合、例えば「abc」なら「 a b c」と 0x0の部分がスペースになっていました。 ところでWindowsがメモ帳などではき出すunicodeはjavaのunicodeとは違う と聞きましたがどうなんでしょうか? 宜しくお願いします。 ※バイト配列をそのまま返すとそれをWindowsクライアントは表示するので 通信部分でバイト配列が壊れている事は考えにくいです。

    • ベストアンサー
    • Java
  • 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' に変換できません。 というエラーが出てしまいうまく変換できません. これを解決する方法はありませんか?

このQ&Aのポイント
  • 同棲中の郵便物を受け取るための方法や注意点について解説します。
  • 転居届を出す際に留意すべきポイントや二人の住所登録の上書きについて解説します。
  • インターネットでの転居届手続きや同棲中の郵便物受け取り方法について詳しく説明します。
回答を見る