サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
a7m.hatenablog.jp
shared_ptrを使ってみる unique_ptrが変数の寿命が尽きた段階でメモリ領域を開放するのに対し、shared_ptrは参照カウンタを持ち参照カウンタがゼロになるとメモリ領域を開放する。 #include <tchar.h> #ifdef __BORLANDC__ #include <boost/tr1/memory.hpp> namespace std { using namespace tr1; // 他のコンパイラと同様にstd::tr1をstdとする } #else #include <memory> #endif #include <iostream> // 円を表す図形 class CPrimitiveCircle { public: CPrimitiveCircle() : x(0), y(0), r(0) { } CPrimitiveCircle(int xx,
なし崩し的にDelphi Advent Calendar 2012に記事を書く羽目になった件について。(ぉぃ まぁ、実業務でのちょっとした覚え書きな件もあるので、いい機会だし久しぶりに更新してみる。 ここ数年でプログラミング環境はUnicodeを意識せざるを得なくなった。DBのエンコーディングがUTF-8であることなんて良くあること。コードを書く側としてはエンコーディング変換とかはフレームワークの類いがよろしくやってくれるから余り気にする必要は無いはず。 それに、C++11でUnicodeリテラルが導入されたから、こんな感じで、いろいろアレなことが出来る。 #include <vcl.h> #include <stdio.h> #pragma hdrstop #include <tchar.h> #pragma argsused int _tmain(int argc, _TCHAR* a
スマートポインタって何? C++において、operator newでメモリ領域(ヒープ領域)を動的に確保した場合、その領域はoperator deleteでプログラマが責任を持って解放してやらなければならない。しかし、deleteを書き忘れたり、例外が発生したときの処理を怠った場合など、それが正しく行われないことはよくある。正しく解放されなかった領域はOSやプロセスが使用可能なメモリ領域を「不正占拠」し、それが積もり積もると、OSやプロセスが停止する場合がある。 #include <memory> class Mess {}; void f(Point p1, Point p2) { Rectangle* r(new Rectangle(p1, p2)); r->rotate(45); // 矩形を45度回転 // ... if (in_a_mess) throw Mess(); // 例
「C++プログラマであるかを見分ける10の質問」に答えてみた。自分の解釈だとこんな感じ。正解かどうか、特に2のreinterpret_castと10は自信なし。ちなみに、Java版は/.Jの日記で。 1. iterator の役割について説明せよ. ポインタがメモリのアドレスを指し示すように、イテレータはコンテナの中身を指し示す。ポインタとの違いは、コンテナの「先頭」と「終端」を意味する値があること。 2. *_cast およびCスタイルのキャストそれぞれについて概要を説明せよ. Cスタイルのキャスト:単なる型変換。数値ならば精度が落ちる場合がある。 static_cast:同上。C++での静的変換はCスタイルのキャストではなく、こっちを使用するべき。 reinterpret_cast:ポインタ同士、もしくは、ポインタと同サイズの整数型とのキャスト。メモリイメージの無理矢理コピー、精度落ち
Boostのutf8_codecvt_facetをインクルードして、imbueでストリームに設定してやればOK。 libs/detail/utf8_codecvt_facet.cppもインクルードしてやらないとリンクエラーが発生。 UnicodeStringをstd::wstringにしてもちゃんと読み書きできる。 参考URL: http://grayhole.blogspot.com/2008/11/utf8.html http://d.hatena.ne.jp/Cryolite/20041029 #include <iostream> #include <fstream> #include <vcl.h> #pragma hdrstop #define BOOST_UTF8_BEGIN_NAMESPACE \ namespace boost { namespace detail { #
Ubuntu 10.04におけるデフォルトフォントマッピングの設定は/etc/fonts/conf.avail/にある、65-nonlatin.confをいじればOKってことか。 /fontconfig/alias/familyの値がフォント名で、それに対応するのは/fontconfig/alias/preferの値。 preferタグにぶら下がっているfamilyタグの出現順でフォントが決まる。 Ubuntu 10.04で標準の日本語フォントになったTakaoフォントを最優先で使用したい場合は、preferタグのうち、日本語フォントとおぼしきところの最上位に<family>TakaoMincho</family>とか<family>TakaoGothic</family>を記述する。 でもさ、69-language-selector-ja-jp.confとの兼ね合いはなんなんだろ。挙動と
VCLのAnsiStringやMFCのCStringと比べて、C++標準の汎用文字列クラスであるstd::stringは機能が貧弱。そいつを補完するのがboostのString Algorithms Library。 以下はその簡単な使い方。 1.trim/trim_copy trim関数は文字列の両端から空白を除去する。trim_copyは空白を除去した結果を返し、文字列そのものには影響を与えない。 #include <string> #include <boost/algorithm/string.hpp> void foo() { std::string ss(" foo "); boost::trim(ss); }2.trim_if/trim_copy_if trim_ifは文字列の両端から条件を満たした部分を除去する。trim_copy_ifはtrim_copy同様、結果のみを返
VC++2005で、MBCSアプリを作成すると、ビジュアルスタイルが有効にならずに、昔ながらのWindows95っぽいクラシックスタイルに。 これを回避する為にはstdafx.hに以下の内容を追加。 #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_IA64 #pragma comment(linker,"/manifestdependency:\"type='win32' na
おいらの趣味として、システムのディスク領域とデータのディスク領域を物理的に違うものにするってのがあるけど、Windowsの場合、ユーザー用の領域はシステムと同じCドライブに作られる。ある程度は変更できるけど、どうしても、Cドライブにデータが残る。 それでは気持ち悪くて、いろいろ試行錯誤した結果、多分、これで問題ないかな? シンボリックリンクの張り方を変えれば、XPでも2000でもOKだと思う。 コンピュータ−管理−ローカルユーザーとグループを開いて、Administratorを有効にする。 Administratorでログオン コンピュータ−プロパティ−システムの詳細設定−ユーザープロファイルを開く。 ユーザープロファイルの移動先を”コピー先”で指定。 レジストリのHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\(
以下の手順でインストールをした。 1.http://sunfreeware.comからパッケージをダウンロード&インストール 2.rootでリポジトリを作成する。 # svnadmin create /home/svn 3.デーモンとして起動するようにする。(参考:http://www6.atwiki.jp/divadiva/pages/38.html) 3-1. /etc/servicesに以下の行を追加 svn 3690/tcp # Subversion server svn 3690/udp # Subversion server 3-2. /etc/inetd.confに以下の行を追加 svn stream tcp nowait root /usr/local/bin/svnserve svnserve -i -r /home/svn/ 3-3. inetconvを実行してSMFが
前口上 小型で気軽に使えるLinuxサーバが欲しくてCHUWI HeroBoxをゲット。 試行錯誤をしまくって、何とかモノになったので覚え書き。 CHUWI HeroBox ミニPC 小型PC 8GBメモリー 256GB SSD Celeron N4100 プロセッサー Windows10 高速Wi-Fi/BT4.0/Type-C/USB 3.0搭載 ファンなし 静音 Mini PC メディア: Personal Computers スペックとかレビューは色々な人が紹介しているので省略。 このPCは元々256GBのSSDを内蔵しているけど、手元に512GBの2.5インチSSDが余っていたのでこれを増設。 Linuxディストリビューションの選択 結局、Ubuntu Server 20.10に落ち着いた。 他のインストール候補はRed Hat Enterprise Linux 8とCentOS
このページを最初にブックマークしてみませんか?
『C++Builder好きの秘密基地』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く