• ベストアンサー

CStringとString

miswaki777の回答

回答No.5

以下のサイトを参考にしてください。 「国際化と地域化」 http://eside.homeip.net/column/i18n.html#std_string 私も、どちらを使おうか迷っている段階なのですが....。

参考URL:
http://eside.homeip.net/column/i18n.html#std_string

関連するQ&A

  • string→CStringの型変換について

    過去の質問をみてもよくわからなかったので、 ここで質問させてください。 いままでVBで開発していましたが、最近C++で開発を始めました。 string型からCString型への文字変換の仕方がわからず困りました。 既存のプログラムの修正を行っており、なぜかsystem名前空間の 使用ができない為、このsystem名前空間を使用せずに 変換できる良い方法はないのでしょうか?

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

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

  • Visual C++ 2008 Express EditionでCString

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

  • Windowsアプリケーションのクラッシュ(CStringによる?)

    社内で使用しているアプリケーションを以下の環境で製作しています。  VC Ver6、MFC使用  OS:Windows2000 このとき、一定期間(45~49日)をおくとクラッシュ してしまう現象が発生してしまい、試しにデバッガ上で動作させてみて試したところ、CStringで定義したオブジェクトに”=”で直接、文字列を代入している箇所でブレークポイントがかかっていました。但し、この場所としてはMFCのCFileクラスのOpenの中でした。  そこで以下の項目について何か情報があれば教えていただけないでしょうか。  1.CStringのマイクロソフト自身のヘルプ情報に以下のような”=”を使用した文字列の代入はメモリリークを発生する可能性があります、とありました。これを避けるには例えばFormat等を使用すれば回避できるものでしょうか。  例:CString aaa;    aaa = ”1234”;     これを以下のように変更。    aaa.Format(”1234”); 2.最初に記述しているように、MFC側でも項目1のような使用法を行っているようですが、このMFCはソースがあるので、それを仮に修正して試すようなことは一般的に可能でしょうか。 以上よろしくお願いします。 不明点等あれば御連絡お願いします。

  • CStringについて

    CStringにおいてFindではエラーが出ないのに、ReverseFindだとエラーがでます。 error C2664: 'ReverseFind' : 1 番目の引数を 'char [4]' から 'char' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 キャストするとエラーは出ませんが文字列の検索は失敗してしまいます。 Findはまったく問題無いのにどうしてこのようなことが起きるのでしょう? どう対処すれば良いか教えてください。 CString ddd; ・ ・ nn=ddd.Find("DOW");     ←エラーなし nn=ddd.ReverseFind("DOW"); ←エラーあり 環境はWIN98 VC++6.0 MFCです。

  • CString: 識別子が見つかりません

    開発環境:Visual c++ 2008 Express Edion OS:Win XP Pro 次のエラーが表示されていて解決できません。 エラー内容は 1>d:\vc_source\dump\dump\Form1.h(448) : error C3861: 'CString': 識別子が見つかりませんでした です。 ちなみにinclude文は以下です。 #include <Windows.h> #include <stdio.h> #include <stdlib.h> #include <tchar.h> #include <string> #include <cstring> やりたいことは String型からCString型を経由して、TCHAR型へ変換することです。またはその逆方法の変換です。そのためにCString型は必要になるのですが、そこでコンパイルエラーになっています。 知っているかがおりましたら、教えて下さい。

  • MFCのCStringについて

    MFCで、CStringをメンバとして含むクラスと、このクラスのオブジェクトを動的に生成して値を代入し、生成したオブジェクトへのポインタを返す関数を以下のように定義しました。 class Record { public:  long Id;  CString Str; }; Record* CreateRecord(long Id_in, CString Str_in) {  Record* ret;  if ((ret = (Record*)malloc(sizeof(Record))) == NULL) {   return NULL;  }  ret->Id = Id_in; // (1)  ret->Str = Str_in; // (2)  return ret; } この関数のコンパイルはうまくいきますが、関数実行時にメモリ参照エラーとなります。 調べてみると、(1)のlong型変数への代入はうまくいっているのですが、(2)のCString型変数への代入がうまくいっていないようです。 既にインスタンス化されているRecord型オブジェクトへのポインタを受け取り、それに代入するという関数であればうまく動きました。 (例) void SetRecord(Record* received, long Id_in, CString Str_in) {  received->Id = Id_in;  received->Str = Str_in; } 先に示したCreateRecord関数は、どこが良くないのでしょうか。

  • CStringとCByteArrayの変換

    いつもお世話になっています。 MFCのCStringクラスとCByteArrayを相互に変換したいと考えているのですが、どうもうまくいきません。 文字コードはユニコードを想定しています。 ====================================================== CByteArray data; CString cs1 = _T("あいうえお"); CString cs2; LPBYTE lpByte = (LPBYTE)(LPCTSTR)cs1.GetBuffer(); data.SetSize(cs1.GetLength() * sizeof(TCHAR)); CopyMemory(data.GetData(), lpByte, data.GetSize()); cs1.ReleaseBuffer(); cs2 = (LPCTSTR)data.GetData(); AfxMessageBox(cs2); ====================================================== (現在の出力状況) あいうえお・・・・ 文字は正しく出力されますが、語尾に文字化けしたようなものがつきます。 他に良い方法があればよろしくお願いします。

  • CString を使わないで小数点キャスト

    MFCを使っています。 CString strTest; strTest.Format("%5.2f%", 50.12) としているのを、CStringを使わないでfloatから文字列にしたいのですが、 どのようにすればよいでしょう? 簡単な方法は無いでしょうか? 変換後は DrawText で表示するものです。 よろしくお願いします。

  • CString 大量連結

    VC++6.0のMFCで開発してます。 プログラム内で CString str; str += ○○ とやって連結し終わった後にstrを使って 処理をする所があって試した所すごく遅く、文字列がかなり 長いと固まってしまいます。調べたらCStringの大量連結は パフォーマンスががた落ちって書いてありました。 何か良い方法はないでしょうか? ※連結は必須です。