CPP
以下定義する #define SPDLOG_WCHAR_FILENAMES #define SPDLOG_WCHAR_TO_UTF8_SUPPORT #define SPDLOG_WCHAR_FILENAMES #define SPDLOG_WCHAR_TO_UTF8_SUPPORT #include <iostream> #include "spdlog/spdlog.h" #include "spdlog/sinks/basic_file_sink.h" // support </iostream>…
rbegin()とrend()を使う。逆順なんだけどイテレータは加算でOK。 for (auto ite = map.rbegin(); ite != map.rend(); ++ite) { .... } ネタ元 https://marycore.jp/prog/cpp/reverse-iterator-rbegin-rend/
find()して置換位置探したりなんだりと、工夫しないと行けない関数なのです。 ネタ元 https://marycore.jp/prog/cpp/std-string-replace-first-all/#replace%E9%96%A2%E6%95%B0%E3%81%AE%E8%87%AA%E4%BD%9C%E6%96%B9%E6%B3%95
__FILE__はフルパスなので使いにくい時がある #define __FILENAME__ (strrchr(__FILE__, '¥¥') ? strrchr(__FILE__, '¥¥') + 1 : __FILE__) ネタ元 https://stackoverflow.com/questions/8487986/file-macro-shows-full-path
picojson::valueにしてserialize()する // 文字列にするためにvalueを使用 picojson::value val(obj); // return std::string val.serialize(); std::cout << val.serialize(); // {"Name": "Yanai"} ネタ元 http://akira206.hatenablog.com/entry/2016/06/2…
PathFileExists() #include<Windows.h> #include<iostream> #include<Shlwapi.h> #pragma comment(lib, "Shlwapi.lib") int main(int argc, char* argv[]) { char path[] = ""; if (PathFileExists(path)) { std::cout << "file exists." << std::endl; } else { std::cout << "file doesn't </shlwapi.h></iostream></windows.h>…
Win32API の Cryptography Functions を利用 ネタ元 https://www.hiramine.com/programming/windows/encryptdecryptstring.html コード // EncryptDecryptCR4.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #…
JSONあつかったり、REST APIとか、便利にいろいろできるらしい C++ REST SDKがMFCの影響か、なぜか使えなかった思い出があるので、 こっちに期待。 ネタ元 https://pocoproject.org/pro/docs/index.html https://www.qoosky.io/techs/8e92d3d34a http://mcom…
GetProcessMemoryInfo()関数を利用します。プロトタイプ宣言 HANDLE OpenProcess( DWORD dwDesiredAccess, // アクセス・フラグ BOOL bInheritHandle, // ハンドルの継承オプション DWORD dwProcessId // プロセス識別子 ); BOOL CloseHandle( HANDLE hObjec…
やっぱりC++が一番早いらしいが、管理が大変らしい。cppのサンプルがgithubにある。以下PJに依存する。JsonCpp - JSON encoding and decoding tclap - command line argument parsing websocketpp - websocket support boost - networking library ネタ元 We…
GCHandle構造体を使うといいらしい。 [DllImport("hogehoge.dll")] private static extern int dll_TestFunc(int frameno, IntPtr ary, int aryCount); public int TestFunc(int frameno, ref float[] ary) { int len = ary.Length; GCHandle gcH = GCHandle…
std::string str = "3.14"; int i = std::stoi(str); // 3 double d = std::stod(str); // 3.14 ネタ元 http://marycore.jp/prog/cpp/convert-string-to-number/
イテレータ使う for (array::iterator it = glossary.begin(); it != glossary.end(); it++) { //title_list object& tmp = it->get<object>(); ネタ元 https://ja.stackoverflow.com/questions/14240/picojson%E3%81%A7array%E5%9E%8B%E3%81%AE%E8%AA%AD%E3%81%BF%E</object>…
以下よりダウンロードして、インストールする。 Visual Leak Detector for Visual C++ 2008-2015VC++ プロジェクトのプロパティから以下を設定する。 [C/C++] -[全般] - [追加のインクルードディレクトリ]に以下を追加。 C:\Program Files (x86)\Visual Le…
result.get()で処理を待って、値を返してくれる #include <future> ... auto result = std::async(std::launch::async, [] { return long_hogehoge(); }); // 非同期中の処理なにか std::cout << result.get() << std::endl;処理中かどうか判定をいれてその間アニメ</future>…
VARIANTにはCComVariantや_variant_tといったラッパークラスがある. これらのクラスはコンストラクタで VariantInit()を,デストラクタでVariantClear()を行う. これによりクラス使用者はVARIANTの初期化と領域の解放を意識しなくてもよくなる. 他にもオ…
内部で解放が必要な型が使われている場合(SAFEARRAYやBSTRなど)、 VariantClear()を使って解放を行う。 ネタ元 https://www26.atwiki.jp/ipubluedictionary/pages/17.html
#include <algorithm> #include <unordered_map> // 集計する std::unordered_map<unsigned int, size_t> hash; for(const auto &x : data){ if(hash.find(x) != hash.end()){ ++hash.at(x); }else{ hash[x] = 1; } } // 最大値の要素のインデックスを取り出す // 別途比較関数を書きたくなかったのでラムダ式</unsigned></unordered_map></algorithm>…
vector使う要素の値でソートして中央の要素を返す 要素の数が偶数だったら中央2つの平均を返す loat median(vector<float> v) { float size = v.size(); vector<float> _v(v.size()); copy(v.begin(), v.end(), back_inserter(_v)); float tmp; for (int i = 0; i < size -</float></float>…
try { element_value = root_value.get< picojson::object >().at( "aaa" ) .get< picojson::object >().at( "bbb" ) .get< picojson::object >().at( "ccc" ) .get< double >() ; } catch( ... ) { ... }ネタ元 https://gist.github.com/usagi/ad5886604913…
確認しないと もしその項目がなかったら例外飛んじゃう ネタ元 http://blog.livedoor.jp/tek_nishi/archives/4950982.html
parallel_sort() parallel_buffered_sort() parallel_radixsort()というstd::sort()より数倍早いソート関数も使える。 ネタ元 https://codezine.jp/article/detail/7632?p=3
mozc式シングルトンをお勧めらしい。 mozcはGoogle IMEです。singletonのテンプレートクラスを使う。 singleton.h class SingletonFinalizer { public: typedef void(*FinalizerFunc)(); static void addFinalizer(FinalizerFunc func); static void finaliz…
#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_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
http://xoyip.hatenablog.com/entry/2014/07/21/193000 参照
ヘッダファイルだけで実装できる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>…
三項演算子でスマートに。 int i = 1; bool j = (i!=0)?true:false; if(j) std::cout << "true"; else std::cout << "false";ネタ元 http://c-crad.wktk.so/td/?p=216
浮動小数点の比較の際の注意(訂正版) ※ 本補足資料の最初の版で、浮動小数点の絶対値を計算する関数を abs としていま したが、fabs の誤りでした。 C 言語で浮動小数点を使った数同士の比較を行うとき、整数の比較と同じ感覚で次のよ うに書いたプログラ…
名前変えないと、結局前作ったハンドルが返ってくる。サイズも変わってない。プロセスを落とすまでそうなるらしい。 ひょっとして、同じ名前(今回の場合は、"MAPFILE")で 異なるサイズのオブジェクトを作成しようとしたりしていませんか?ネタ元 http://hp…