C++ のテストフレームワーク igloo を使ってみました。 Loading... igloo の特徴 ヘッダファイルのみなので導入が楽 iglooはヘッダファイルのみで構成されているため、テストフレームワーク自体のコンパイルが必要ないので導入が簡単でした。iglooのソースはgithubにあるので、 git submodule https://github.com/joakimkarlsson/igloo extlib/igloo のようにして、"extlib/igloo" をインクルードパスに含めるようにするだけです。 Travis-CI などのCIサービスで使うのも簡単です。 BDDスタイルでテストを書ける BDDスタイルでテスト/サブテストを書くことができます。これによりテストが構造化され、テストコードの見通しが良くなります。スタイルは以下の3つが使用できます。 Context/
以前アナウンスしたJetBrainsのC++ IDEの開発計画について対する期待の声が寄せられています。プライベートプレビューに対して大変な数の応募がありました。たくさんのフィードバックと、リリースを期待する声に驚いています。ここで現在の状況をお伝えしたいと思います。 プライベートプレビュービルドは現時点の機能セットでカバーできる一部のプロジェクトにのみ提供する予定で、近々お届けできる見込みです。プライベートプレビュービルドの主要機能は以下の通りです: CMake + GCC + GDB7. あらゆるプラットフォームむけ開発: Linux、OS X、Windows (Cygwin, MinGW). C++11 サポート (ラムダ関数、raw string literals、variadic templates、decltype、autoなど) Code解析とたくさんのクイックフィックス リ
※OLE2T が実行されるたびに、スタック領域が消費されるのでループ内での使用や、非常に大きな文字列の使用は避けてね! #include <regex> #include <string> #include <iostream> ..... // パーサー LPTSTR p_json = OLE2T(json); // strtok "}"で区切り LPTSTR p_tp; LPTSTR p_next; p_tp = _tcstok_s(p_json,_T("}"),&p_next); // 最初の1回 while( p_tp != NULL ){ std::wcmatch match; std::wregex regex(_T("\"ABC\":[0123456789]*")); if (std::regex_search(p_tp, match, regex)) { const wch
いやまじで使っちゃいけないです。 三年前こういうことがあったんです。 Haskell と C++ を使っているコードなんですが、 突然ビルドができなくなる。さっきまで上手く行っていたのに、意味不明な C++ のエラーがゴボゴボ出てくる。 git status や hg status してもそんなとこ何も触ってない。そもそも C++ なんか触ってねえし、俺触ってたの Haskell だし! 変更を全部元に戻してビルド ⇒ やはり意味不明な C++ のエラー。エラー行数が多すぎて読む気も起きない。俺は C++ 専従じゃねえからこんなもん読めるか! make clean してフルビルドしなおすと…やはり C++ のエラー。ふんぎーーーーー!!! ビルドできたはずのコードに戻して make clean してもビルドエラーが出るわけ。まさに「何もいじってないのに壊れましたぁ」状態。ほら、さすがにプロ
Programming is hard. Programming correct C and C++ is particularly hard. Indeed, both in C and certainly in C++, it is uncommon to see a screenful containing only well defined and conforming code.Why do professional programmers write code like this? Because most programmers do not have a deep understanding of the language they are using.While they sometimes know that certain things are undefined o
A C++ library to help in parsing an NTFS volume, file record and attributes. Download source code - 21.7 KB Download demo - 134 KB Introduction This is a library to help in parsing an NTFS volume, as well as file records and attributes. The readers are assumed to have deep knowledge about NTFS and C++ programming. I will not introduce NTFS concepts here as the introduction will be either a big ani
中3女子です。 今回は、みんな大好きユーザ定義リテラルについて。 ユーザ定義リテラルは、値(整数、不動小数点数、文字列)に対するプログラマブルなサフィックスを定義することができる機能である。 例えば糖衣構文や単位を持った値を扱うために用いられる。 { constexpr auto duration = 4_mins + 33_secs; } ユーザ定義リテラルはいらない子か ところで、このユーザ定義リテラルは、方々で微妙な子扱いされている。 というのも、そもそもユーザ定義リテラルは直観的な記述を可能とするものであるはずなのだが、その用法には一見非直観的な落とし穴がある。 例えばユーザ定義リテラルの識別子は、アンダースコアで始めなければならない。 なぜなら、アンダースコアで始まらないサフィックスは、すべて予約されているからだ。 プログラマがアンダースコアで始まらないユーザ定義リテラルを定義し
static_vector using aligned_storage static_vector: fixed capacity vector update ソースコード: http://svn.boost.org/svn/boost/sandbox/varray/ 現在、BoostのSandbox上で、フリーストア(ヒープ)を使わない可変長配列の開発が進められています。 このコンテナは、テンプレートパラメータで決定した容量に基いて、静的なサイズの配列を内部的に持ち、その配列に対して配置newすることで可変長配列を実現します。 使い方は以下のようになります。 #include <iostream> #include <boost/container/varray.hpp> int main() { // intの可変長配列を定義。最大要素数は3 boost::container::var
中3女子です。 このエントリは C++ Advent Calendar 2012 の 7 日目の記事です。 概要 この記事では Sprout C++ Library という拙作のライブラリによって、以下のようなプログラムを作成する。 コンパイル時音声処理ライブラリ Sprout.Compost の紹介 コンパイル時に基本波形による音階を生成する コンパイル時に波形にエフェクトをかける コンパイル時に音声合成する なお、自分は音楽理論やサウンドプログラミングに関してまったく素人であり、その方面の用語や解説の不正確な部分についてはご容赦願いたい。 動作環境 本記事内のコードは下記の環境でコンパイル・実行を行なっている。 コンパイラ : clang version 3.2 (trunk 159713) OS : Ubuntu 10.04 LTS (仮想環境) Memory : 3.0GiB RA
ISO C++ standards meeting February 10-15, Hagenberg, Austria using std::cpp March 19-21, Madrid, Spain ACCU 2025 April 1-4, Bristol, UK ISO C++ standards meeting June 16-21, Sofia, Bulgaria Follow All PostsAll Posts RSS The home of Standard C++ on the web — news, status and discussion about the C++ standard on all compilers and platforms.
「constexpr を使うべき5の理由」ようやく4つめです。 今回は、いわゆるメタプログラミングにおける constexpr について取り上げます。 4.あのうんざりするテンプレートメタプログラミングによる数値計算からはもはや解放された 以下のコードは、[1 .. 5] のリストの各要素を加算するアキュムレートを、古式ゆかしい TMP で書いたものである。 #include <type_traits> #include <boost/mpl/apply.hpp> #include <boost/mpl/next.hpp> #include <boost/mpl/deref.hpp> #include <boost/mpl/vector_c.hpp> #include <boost/mpl/begin_end.hpp> #include <boost/mpl/int.hpp> #inclu
C++11のstd::swapは、だいぶ大きく変更された。C++03までのswapは、<algorithm>にあり、CopyConstructibleかつAssignable(C++11のCopyAssignableに相当)を要求した。ところが、C++11では、<utility>に移されたあげく、MoveConstructibleかつMoveAssignableを要求するようになった。まるっきり別物になってしまっているのだ。果たして問題を起こさないものだろうか。おぼつかないものだ。 実装例は以下のようになる。 // C++03のswap template < typename T > void swap( T & a, T & b ) { T temp = a ; a = b ; b = temp ; } // C++11のswap template < typename T > void
Logging In C++ By Petru Marginean, September 05, 2007 Logging is a critical technique for troubleshooting and maintaining software systems. Petru presents a C++ logging framework that is typesafe, thread-safe, and portable. Logging is a critical technique for troubleshooting and maintaining software systems. It's simple, provides information without requiring knowledge of programming language, and
August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) std::stringstreamとは C++の標準ライブラリ(STL)で定義されている文字列ストリームで、色々な型を文字列化する際に重宝するクラスです。 JavaのStringBufferクラスに似ています。 まず、簡単な使い方から見てみましょう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く