読者です 読者をやめる 読者になる 読者になる

CPP

PPLの並列アルゴリズム

CPP

parallel_sort() parallel_buffered_sort() parallel_radixsort()というstd::sort()より数倍早いソート関数も使える。 ネタ元 https://codezine.jp/article/detail/7632?p=3

シングルトンのベターな実装方法

cpp

mozc式シングルトンをお勧めらしい。 mozcはGoogle IMEです。singletonのテンプレートクラスを使う。 singleton.h class SingletonFinalizer { public: typedef void(*FinalizerFunc)(); static void addFinalizer(FinalizerFunc func); static void finaliz…

C++で今日の日付をyyyymmddで取得

CPP

#include <ctime> ... std::time_t rawtime; std::tm timeinfo; std::time(&rawtime); localtime_s(&timeinfo,&rawtime); long tmpYYYYMMDD = (1900+timeinfo.tm_year) * 10000 + (timeinfo.tm_mon+1) * 100 + timeinfo.tm_mday; ネタ元 http://stackoverflow.com/q</ctime>…

BSTRの文字列をAfxMessageBoxで表示する

CPP

_bstr_t経由でCStringにコピーして出力 void CVbsDlg::ShowBSTR(BSTR bstr) { _bstr_t bstrStart(bstr); CString s; s.Format(_T("%s"), (LPCTSTR)bstrStart); AfxMessageBox(s); }ネタ元 https://codezine.jp/article/detail/25

C/C++のXML Parserについてよくまとまっているサイト

C CPP

http://xoyip.hatenablog.com/entry/2014/07/21/193000 参照

お手軽jsonパーサー&シリアライザーPicoJSONの使い方

ヘッダファイルだけで実装できるjsonパーサー&シリアライザー。 std::map<>を使って直感的にアクセスできる。 シリアル化 #include "picojson.h" ... std::map<std::string,picojson::value> data; data["mojiretsu"] = picojson::value(_T("文字列")); data["BOOLvalue"] = picojson::va</std::string,picojson::value>…

bool型にint型の値を代入する時の警告の処理の定型文-C4800(C++)

CPP

三項演算子でスマートに。 int i = 1; bool j = (i!=0)?true:false; if(j) std::cout &lt;&lt; &quot;true&quot;; else std::cout &lt;&lt; &quot;false&quot;;ネタ元 http://c-crad.wktk.so/td/?p=216

doubleの==比較は思ったとおりにならない時ある

cpp

浮動小数点の比較の際の注意(訂正版) ※ 本補足資料の最初の版で、浮動小数点の絶対値を計算する関数を abs としていま したが、fabs の誤りでした。 C 言語で浮動小数点を使った数同士の比較を行うとき、整数の比較と同じ感覚で次のよ うに書いたプログラ…

メモリマップドファイルのサイズ変更のつもりでCloseHandle()してからCreateFileMappingしても同じ名前じゃ意味が無い

名前変えないと、結局前作ったハンドルが返ってくる。サイズも変わってない。プロセスを落とすまでそうなるらしい。 ひょっとして、同じ名前(今回の場合は、"MAPFILE")で 異なるサイズのオブジェクトを作成しようとしたりしていませんか?ネタ元 http://hp…

ファイルが残っているフォルダを削除

コツコツファイル消してからRemoveDirectory()が正攻法だとおもうけど、シェル関数を使うと楽。間違って大事なフォルダ消しちゃわないようにデバッグ時は要注意だよ。 BOOL DeleteDirectoryUseShellFunc( LPCTSTR lpPathName ) { // 入力値チェック if( NULL…

STLで正規表現

※OLE2T が実行されるたびに、スタック領域が消費されるのでループ内での使用や、非常に大きな文字列の使用は避けてね! #include <regex> #include <string> #include <iostream> ..... // パーサー LPTSTR p_json = OLE2T(json); // strtok "}"で区切り LPTSTR p_tp; LPTSTR p_next; </iostream></string></regex>…

std:string(shiftjis/ansi)からCString(unicode)に変換する簡単な方法

CStringAに入れてからCStringに突っ込む。直変換するより、メモリや処理速度の効率は良くないと思うよ。 std:string str_sjis; str_sjis = "abc"; CStringA mess; mess.Format("%s",str_sjis.c_str()); CString mess2; mess2 = mess; AfxMessageBox(mess2);

メモリマップドファイルを使ってアプリケーション間でデータを共有する

CPP

http://www.gesource.jp/programming/bcb/82.html http://www7a.biglobe.ne.jp/~tsuneoka/win32sub/3.html http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_FileMapping.html

シングルトンパターンの実装

CPP

http://www.geocities.jp/bleis_tift/cpp/singleton.html

ラムダ式のサンプル

CPP

C++でのラムダ式のサンプル。 http://kaworu.jpn.org/cpp/%E3%83%A9%E3%83%A0%E3%83%80%E5%BC%8F

BSTRからCStringの変換

CPP

OLE2Tマクロというのがある。 USES_CONVERSION; // 。変換のためのリソースを確保するためのもの? CString str = OLE2T(*a); ネタ元 COMプログラミング BSTRからCStringの変換方法

C++でREST通信するには REST SDK

CPP

無理せずC#とかで組んだほうが楽っぽいがどうしてもというならC++でもライブラリがあるというお話。 C++ REST SDKを使ってWebサービスを利用する from You&I C++ REST SDKを使ってWebサービスを利用する

vector以外の動的配列 CArray / CAtlArray

例えば128個の配列を確保するときそれぞれ次のようにコーディングすることができます。(この他にも方法はありますが) CArray < int > a; a.SetSize( 128 ); CAtlArray < int > b; b.SetCount( 128 );ネタ元 VC++、CArray、CAtlArray、vector、配列の違い | …

C++でJSONを使うライブラリ

CPP

色々あるみたい。一番簡単に扱えるのはpicojsonだなぁ。 Big Sky :: C言語から使えるJSONパーサ、jansson がとても直感的で良い Kazuho@Cybozu Labs: 今更 C++ で JSON パーサ「picojson」を書いたわけ でらうま倶楽部 : C++でJSONを読み書きするならpicojso…

C++から.NET(C#)のDLLに文字列を含む構造体を渡して書き込んでもらう方法

[.net][CPP][C#]C++側 typedef struct _StrData{ INT32 num0; INT32 num1; INT32 num2; INT32 num3; INT32 num3; char moji0[5]; // 4文字 char moji1[2]; // 1文字 StrData(){ num0 = num1 = num2 = num3 = num4 = 0; memset(moji0,0,5); memset(moji1,0,2)…

CStringからBSTRを作るにはAllocSysString()/SetSysString()を使う

Microsoft Foundation Class(MFC)には BSTR をラップするヘルパー クラスがありません。代わりに、別の方法で BSTR と MFC の CString クラス間の変換が簡単に行えます。次のように BSTR を CString コンストラクタに渡すだけで BSTR を CString に変換で…

C++のスマートポインタといえばstd::unique_ptr

CPP

昔はauto_ptr使ったりしたけど、もう古いそうです。問題あったらしい。ネタ元 スマート ポインター (Modern C++) C++11メモ @ 唯一のリソースはstd::unique_ptr - ラーメンは味噌汁 以下消えると困るのでコピペまずは基本的な使い方です。コンストラクタに管…

VB.NETのBool型は数値型に変換すると、Trueのときは-1、Falseのときは0

TRUE = 1 じゃないんだ! VBのBool型とSQL ServerのBit型. VB.NETのBool型は真偽を表す型で、TrueまたはFalseを返します。 数値型に変換すると、Trueのときは-1、Falseのときは0になり、 文字型に変換すると、Trueのときは"True"、Falseのときは"False"にな…

クリップボードに貼り付ける方法

CPP

[CPP]■クリップボード 以下のコードで、クリップボードへテキストをコピーします。●ワイド文字の場合 一旦、WideCharToMultiByte関数を使ってマルチバイト文字(OEM)に変換する必要がある。 ワイド文字のままクリップボードにコピーしても、ペースト時に、マ…

C#で作ったDLLのAPIにC++から構造体のポインタを渡して、結果を書き込んでもらう

[CPP][C#]これで正解なのかわからないが、とりあえずできたのでメモ。C#の方はunsafeを有効にしておく。 C#側 [DllImport("kernel32.dll")] static extern unsafe void CopyMemory(void* dst, void* src, int size); // 受け渡し用構造体(32bit前提) [Struct…

C++でいい感じでHTTPが扱えるライブラリnanowww

CPP

[CPP]まずはgitをインストールしてないと入手できない WindowsにGit環境をインストールする そしてリポジトリも適当に作っておかないといけない Gitの基本 新しいリポジトリを作成する そしてコマンドプロンプトでつくったリポジトリのフォルダに移動。Gitで…

構造体のコンストラクタでも引数付けられる

CPP

クラスとの違いがあんまないんだなぁ。 サンプル #include <iostream.h> struct Complex { Complex( int nRe=0, int nIm=0 ) { m_nRe = nRe; m_nIm = nIm; } int m_nRe; int m_nIm; }; void main() { Complex C0; Complex C1( 123 ); Complex C2( 123, 456 ); cout << "C</iostream.h>…

文字列から数値に変換

C CPP

文字列の日付を数値にして抽出など。CStringでも使える。 char *str = "2013/4/9" long year,month,day; sscanf(str,"%d/%d/%d",&year,&month,&day);ネタ元 http://www.ccad.sist.chukyo-u.ac.jp/~mito/ss/program/C/DialogBase/app/string/ http://www9.pla…

wctob() ワイド文字 (wide character)1文字を を 1 バイト文字に変換 

CPP

ワイド文字 (wide character) を 1 バイト文字に変換します. #include <stdio.h> #include <wchar.h> int wctob( wint_t * c );wctob 関数は c で指定されるワイド文字が 1 バイト文字に対応するかを調べ,可能なら 1 バイト文字に変換します.戻り値 c の値が正しい 1 バイト</wchar.h></stdio.h>…

「ソートも、サーチも、あるんだよ」〜標準C++ライブラリにみるアルゴリズムの面白さ

CPP

標準ソート関数の紹介 ネタ元 http://codezine.jp/article/detail/6020

基底クラス(親クラス)の関数の呼び出し方法

CPP

しばらくぶりで忘れちゃってた。 Application::onKeyPress(a_key, a_x, a_y);つまり基底クラス名::メンバ関数名(パラメータ); 基底クラスの呼び出し方は言語によって様々。 ネタ元 http://slashdot.jp/~j3259/journal/399424

STL風に使えるマップ型コンテナの紹介と性能比較

CPP

コンテナ系も色々あるんですね。std::mapしか使ったことなかった。 Loki::AssocVector google-sparsehash STX B+ Tree std::map std::unordered_map 使用メモリの比較図 更新が少なくて、参照が多い場合はLoki::AssocVectorを使うといいみたい。メモリ効率が…

「C++ による Windows プログラミングの学習」 が日本語化されました

CPP

C++ 初心者の方を対象とした MSDN ライブラリの 「Learn to Program for Windows in C++」 がこのたび日本語化され、 「C++ による Windows プログラミングの学習」 として公開されました。http://blogs.msdn.com/b/jpwin/archive/2011/07/04/learn-to-progr…

googleのgflagsでは大がかりすぎだと思っている方へ C++向け簡易コマンドラインパーザ cmdline

C++向け簡易コマンドラインパーザ cmdlineコードのダウンロードはこちら http://github.com/tanakh/cmdline 使ってみようとおもってVC++でコンパイルかけたらcxxabi.hが無いと怒られた。gccについてくるライブラリがないとつかえないっぽい。うーむ、なんと…

vectorのソート

std:sort()を使う #include <vector> #include <algorithm> using namespace std; ・・・ vector<long> data; data.push_back(10); data.push_back(5); sort(data.begin(),data.end());//昇順ソートネタ元 http://7ujm.net/stl/sort.html</long></algorithm></vector>

vectorでの検索(find)の仕方

vector自体にはfindがないのでアルゴリズムを使う vector<long> v_list; ・・・ v_list.push_back(100); v_list.push_back(200); v_list.push_back(300); vector< long >::iterator cIter = find( v_list.begin(),v_list.end() , 200 ); if( cIter != v_list.end() ){</long>…

StrToInt()のDouble版を手作りする

#include <string> ・・・ const double StrToDouble(CString& s) { return std::atof(s.GetBuffer(0)); }ネタ元 http://www.richelbilderbeek.nl/CppStrToDouble.htm</string>

POCO C++ Libraries

CPP

C++ Portable Components の略で、POCO project が作成/メンテナンスしている C++ Class Library。 大ざっぱに言えば Java の標準クラスライブラリの、ネイティブ C++ 言語版といったニュアンス。機能: スレッド、スレッド同期及びマルチスレッドプログラ…

CString/intの変換には StrToInt()というのもあるよ

CPP

いろいろ方法はあるけど、CStringからなら、これのほうが気持ちよく変換できる気がする scann = StrToInt(scanx); // shlwapi.hネタ元 http://q.hatena.ne.jp/1177074643

2038年対策

CTime クラスと CTimeSpan クラスは、 2038 年以降に対応できません。 それぞれ、 COleDateTime クラスと COleDateTimeSpan クラスに置き換えます。VC++6にはこのクラスがないみたい。 というかVisualStudio6自体が2038年には立ち上がらないそうなので、そも…

引数の取得

GetCommandLine()とか __argc、__argvを使います。ネタ元 http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200408/04080046.txt

ポインタの参照渡し

CPP

地味に分らなくなるのでメモ。 void Ref(int* (&a)) { a = 0; }

ライブラリやおいそれと手の出せないコードを使ったテストをする時用のライブラリ SEXYHOOK

CPP

ライブラリの中の関数や、ある一定の行程を踏まないとまともに動作しない関数を使ったテストする時に使えます。SEXYHOOKで始めるテスト とある関数の接合部 既存のソースコードに手を加えず、自由に接合部を作成

Cで今日の日付を取得

CPP

#include <time.h> ・・・ time_t current; struct tm *local; time(&current); /* 現在の時刻を取得 */ local = localtime(&current); /* 地方時の構造体に変換 */ // yyyymmdd ってイメージの数字を作る long todaynum = (local->tm_year+1900)*10000 + (local->tm</time.h>…

迷信 new に失敗すると NULL が返る。

CPP

http://www.kijineko.co.jp/tech/superstitions/return-null-if-new-failed.htmltry-catch()で捕まえるのが確実っぽいです。

map<>で存在しないキー判定

find()で調べる。 // キーと値が が string と string なマップを生成 map<string, string> itemMap; // マップに値を挿入 itemMap.insert(pair<string, string>("hoge", "ほげ")); itemMap.insert(pair<string, string>("foo", "ふー")); if( itemMap.end() != itemMap.find("foo") ){ // 発見 }else{ // 見</string,></string,></string,>…

C++のファイル出力 fstreamの使い方

CPP

#include <fstream> using namespace std; int main( ) { ofstream ofs("data.txt"); string buf; if(ofs) { ofs << "OK" << endl; // cout に書き出すのと同じ感じで } return 0; }ネタ元 http://sato-si.at.webry.info/200711/article_3.html</fstream>

CPUのコア数を知りたい

CPUIDというのがキーワードだねCPUID/マルチ種別判定CodeZine - CPUID命令によるプロセッサ環境の判別

Visual C++ サンプル - CPUID サンプル : CPU 機能の確認

MS製CPU情報を取得するサンプルコードhttp://msdn.microsoft.com/ja-jp/library/xs6aek1h(VS.80).aspx

スレッド化でマルチコアCPUの力を知る

CPP

最近のPCなら普通コア2なCPUが載っています。 スレッド分ければ分散されて高速になるんだね。 シングルコアCPUだと逆に遅くなるはず。ネタ元 http://blogs.wankuma.com/episteme/archive/2009/09/18/181390.aspx VC++2008では上記URLにあるサンプルまんまで…