タグ

stringに関するyasufのブックマーク (3)

  • C++ の string と vector の reserve() の挙動 - bkブログ

    C++ の string と vector の reserve() の挙動 C++ の string と vector には前もって容量を確保するための reserve() というメンバ関数があります。何気なく使っていた関数ですが最近になって興味深い挙動に気づきました。 reserve() の基 string と vector の reserve() は前もって容量 (capacity) を確保しておくためのメンバ関数です。前もって容量を確保 (reserve) しておけば、データの追加時に発生する再割り当て (reallocation) を防ぐことができ、効率的です。 たとえば、何もしないで文字列に 1,000文字追加した場合、(内部的に倍々で容量を増やしていくため)10回程度の再割り当てが発生しますが、 s.reserve(1000) のように容量を確保しておけば 1回の割り当て (

  • 【C++/CLI】System::String^からchar*へ変換 画像処理ソリューション

    アンマネージのC言語で作られたライブラリなどへ.NETのプログラム(マネージ)から文字列を渡す場合、System::String^からchar*へ変換する必要があります。 この場合、 System::Runtime::InteropServices::Marshal::StringToHGlobalAnsiメソッド を使って変換します。 char*ポインタを使い終わったら System::Runtime::InteropServices::Marshal::FreeHGlobalメソッド でメモリを解放します。 以下、.NETのファイルを開くダイアログボックスを使ってファイル名を取得し、OpenCVの画像読込関数(cvLoadImage)へ渡す例を示します。 //ファイルを開くダイアログの作成 OpenFileDialog^ dlg = gcnew OpenFileDialog; //ファ

  • System:Stringを色々な型に変換 - かせいさんとこ

    これは何? System:Stringを色々な型に変換するサンプルコードです。 経緯 VisualC++windowsFormでは、テキストボックスの入力値の型はSystem:String。 System:Stringは加工が面倒。 なので、System:Stringを色々な型に変換するユーティリティがあると便利と思い作成。 ポイント System:Stringは可変長文字列の為、char*にはキャストできない。 System::Runtime::InteropServices::Marshalは、C++/CLIでアンマネージドコードを扱うときに使う.NETのクラス。 Marshal::StringToHGlobalAnsiで、System:Stringをsjisのcharポインタに変換。 (文字コードがsjis以外なら、文字コードの変換が必要) Marshalで取得したポインタは、Ma

    System:Stringを色々な型に変換 - かせいさんとこ
  • 1