タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとProgrammingとC++に関するAmaiSaetaのブックマーク (266)

  • CodeProject

    Introduction This article illustrates a snippet that permits to add color to console messages. Background Well, does it really need any comments? Using the code This sample shows how to use the library: #include "ConsoleColor.h" std::cout << green << "This text is written in green" << white << std::endl; std::cout << color(FOREGROUND_RED|FOREGROUND_GREEN) << "This text has a really exiting color !

  • C++ のtype_info.name() - hidemonのブログ

    C++ではRTTIと呼ばれる機構によって,実行時の型情報が取得できる. これによって,動的に定まるオブジェクトの型を知ることができる. #include <typeinfo> #include <stdio.h> namespace test{ class A { public: virtual void m(){} // 1. 仮想メソッド宣言 }; class B : public A { public: virtual void m(){} // 1. 仮想メソッド宣言 }; } using namespace test; main(){ A * a0; a0 = new A(); const std::type_info & id = typeid(*a0); printf("%s\n", id.name()); a0 = new B(); const std::type_info

    C++ のtype_info.name() - hidemonのブログ
  • Kazuho@Cybozu Labs: 今更 C++ で JSON パーサ「picojson」を書いたわけ

    既に mattn さんが、「Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!」で紹介してくださっています (mattn さん、アドバイス&バグ情報ありがとうございます!) が、いまさら C++ で JSON パーサを作りました。それは、以下の3点を満たすものがなかったから。 ヘッダファイル only boost 等、他の重たいライブラリに依存しない array や object が STL にマッピングされる コードは、coderepos に置いてありますので、よろしければお使いください (picojson.h)。 なお、現時点での制限事項として、 \n や \r, \uXXXX といったエスケープの処理が未実装rev. 34232 で対応しました (含サロゲートペア) 空白文字の判断基準が RFC と異なるrev. 34277 で空白と

  • .NETがC++に駆逐される?

    ► 2025 (64) ► 7月 (1) ► 6月 (12) ► 5月 (5) ► 4月 (10) ► 3月 (14) ► 2月 (14) ► 1月 (8) ► 2024 (70) ► 12月 (13) ► 11月 (8) ► 10月 (4) ► 9月 (8) ► 8月 (3) ► 7月 (15) ► 6月 (1) ► 5月 (2) ► 4月 (4) ► 3月 (8) ► 2月 (3) ► 1月 (1) ► 2023 (71) ► 12月 (7) ► 11月 (2) ► 10月 (4) ► 9月 (10) ► 8月 (6) ► 7月 (6) ► 6月 (8) ► 5月 (5) ► 4月 (2) ► 3月 (6) ► 2月 (9) ► 1月 (6) ► 2022 (88) ► 12月 (3) ► 11月 (3) ► 10月 (7) ► 9月 (5) ► 8月 (9) ► 7月 (8) ► 6

    .NETがC++に駆逐される?
    AmaiSaeta
    AmaiSaeta 2011/04/16
    ただ単純に.NETが選択肢から外れた、というのであれば、Javaに移行しそうな気がするが。 | (.NET含め新興言語/環境は)開発の容易さというのも有ると思うので、『駆逐される』と言う事はないんじゃないかな。
  • Big Sky :: C++でcoutやcerrの挙動を変える。

    先日twitterで「C++でデバッグする時、よくやるよね」って言ったら結構知らない人がいたのでここでも紹介してみる。 既存のコードでcout/cerrを使ったデバッグ文がわんさかあって、これログファイルとして出力したいな...って場合ありますよね。 そんな場合 #include <iostream> #include <fstream> using namespace std; int main() { // こんなの ofstream ofs("debug.log"); cout.rdbuf(ofs.rdbuf()); // いれとく cout << "debug string" << endl; } こうしておくと、その後のcoutへの出力が全てdebug.logというファイルへ出力される。 なおrdbufを元に戻すには #include <iostream> #include <f

    Big Sky :: C++でcoutやcerrの挙動を変える。
  • C++0xの落とし穴を埋める改良

    聡明なC++0xプログラマである読者諸君ならば、もう、以下のコードは、C++0xでは、疑いようもなくwell-formedであることを知っているだろう。 // C++03ではill-formed // C++0xではwell-formed vector<vector<int>> v ; 従来、連続した>は、>>演算子と、文法上曖昧であるので、かならず>>演算子だと解釈されるようになっていた。C++0xでは、このような場合、演算子と解釈されることはなくなった。もちろん、分かりやすさから言えば、空白文字を挟んだ方が分かりやすいだろう。 vector< vector< int > > v ; 何にしても、このようなちょっとした落とし穴は、初心者を無用に混乱させる。、C++0xでは、このようなちょっとした落とし穴がいくつも塞がれている。 さて、ここまでが前振りで、ここからが番である。以下のコード

    AmaiSaeta
    AmaiSaeta 2011/02/28
    ほう、0xでファイル末尾の改行は無くても良くなったのか。
  • C++0x 標準ライブラリ完全解説 〜 No.03 std::move_if_noexcept, - 野良C++erの雑記帳

    該当規格: 20.3.3 forward/move helpers [forward], N3225 http://sites.google.com/site/cpprefjp/reference/utility/move_if_noexcept C++0x 標準ライブラリ完全解説の三回目です。 今回は解説することも少ないので、さっさと書いてしまうことにします。 前回の記事では、主に初心者を対象として 、 std::move という関数がどのような意味を持つかを説明し、 C++0x で新たに追加された概念である rvalue reference について軽く触れました。 今回 触れる std::move_if_noexcept は、名前から分かるように、 std::move の類似品です。 しかし、 C++0x の標準ライブラリ中でも特に使用頻度の高い std::move と違い、 std

    C++0x 標準ライブラリ完全解説 〜 No.03 std::move_if_noexcept, - 野良C++erの雑記帳
  • C++0xの日本語訳ドキュメントまとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    どこに何あるかの管理用エントリ。 翻訳に間違いがあったら教えてください。 SkyDriveの公開フォルダ N1377 C++言語にMove Semanticsのサポートを加える提案(原文)(エントリ) N1385 転送問題:引数(原文)(エントリ) N2027 右辺値参照の簡易入門(原文)(エントリ) N2098 Scoped Concept Maps(原文)(エントリ) N2235 一般化された定数式(原文)(エントリ) N2666 More STL algorithms (revision 2)(原文)(エントリ) N2680 Placement Insertのための提案(Revision 1)(原文)(エントリ) N2778 Working for Range-based for-loop (revision 4)(原文)(エントリ) N2927_New_wording_for_C+

    C++0xの日本語訳ドキュメントまとめ(※随時更新) - Faith and Brave - C++で遊ぼう
  • 本の虫: rvalue reference 完全解説

    目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue

  • テンプレートパラメータに指定できるもの - Faith and Brave - C++で遊ぼう

    テンプレートパラメータにはポインタを指定することができる(cppll:10249 参照) #include <iostream> using namespace std; template <int* Pointer> void foo() { if (Pointer) cout << *Pointer << endl; else cout << "null" << endl; } int value = 3; int main() { foo<&value>(); return 0; } 参照も指定できる #include <iostream> using namespace std; template <int& Ref> void foo() { ++Ref; } int value = 3; int main() { foo<value>(); cout << value << e

    テンプレートパラメータに指定できるもの - Faith and Brave - C++で遊ぼう
    AmaiSaeta
    AmaiSaeta 2011/01/18
    むむむ、えーと、静的なモノであればtemplateに渡せると言う事で良いのかな?(cppllログ見られなかった)
  • C++ Properties -- a Library Solution

    N1615 C++ Properties – a Library Solution Page 1 of 14 Document Number: SC22/WG21/N1615=04-0055 Date: 2004-04-09 Author: Lois Goldthwaite Email: Lois@LoisGoldthwaite.com C++ Properties -- a Library Solution N1600 is a summary of the "property" language extension that is proposed for C++/CLI. I can't help feeling that this is an effort to impose an alien idiom on C++. There is too much of "the comp

    AmaiSaeta
    AmaiSaeta 2011/01/18
    C++でのproperty実装。コード部分だけ読んだ(マテ | class Propertyの存在意義がよく分からん。そのまま代入/参照するんならpublicなメンバ変数でええやん。 | my_objectメンバ変数設定するoperator()がpublicでキモいな。friendでどうにか?
  • C++0x 標準ライブラリ完全解説 まとめ - 野良C++erの雑記帳

    No.00 Introduction (2011-01-07 更新) No.01 namespace rel_ops, utility (2011-01-07 更新) No.02 std::move, utiliy (2011-01-16 更新) No.03 std::move_if_noexcept, utiliy (2011-01-17 更新) No.04 std::swap, utiliy (次回予定)

    C++0x 標準ライブラリ完全解説 まとめ - 野良C++erの雑記帳
    AmaiSaeta
    AmaiSaeta 2011/01/08
    ~0x標準ライブラリ解説。
  • C++0x Memory Model 第1回 - 1.9 Program execution - Cry’s Diary

    前回の記事:C++0x Memory Model 第0回 - メモリモデルとは何か 以下では, C++0x プログラミング言語の標準規格として一貫して N3225 を参照しています.文中で (1.9/12) などという表現が出てきた場合は N3225 における条項を指しています. 太字かつ斜字体の言葉 は N3225 で C++0x で定義される用語, 太字の言葉 はブログエントリ中で特別な意味を持たせた用語として定義しているものです. 第1回目のこの記事では,まず,ただ1つの 実行スレッド thread of execution だけを考慮した場合のメモリモデルに関わる基的な事項を説明していきます.複数スレッドが存在する状況下でのメモリモデルに関する説明する上で,単一の実行スレッド内に限定した場合の状況を把握しておくことは必要不可欠なのです. 第0回において,プログラム中にただ1つの

    C++0x Memory Model 第1回 - 1.9 Program execution - Cry’s Diary
  • Boost.Regex(日本語訳)

    Boost.Regex(日語訳) Boost.Regex John Maddock Copyright © 1998-2007 John Maddock1 翻訳にあたって • 書は Boost.Regex ドキュメントの日語訳です。原文書のバージョンは翻訳時の最新である 1.45.0 です。2 • 原文の誤りは修正したうえで翻訳しました。 • 外部文書の表題等は英語のままにしてあります。 • 原文に含まれているローカルファイルへのハイパーリンクは削除しています。 • 文中の正規表現、部分式、書式化文字列は regular-expression のように記します。 • マッチ対象の入力テキストは“input-text”のように記します。 • ファイル名、ディレクトリ名は pathname のように記します。 • その他、読みやすくするためにいくつか書式の変更があります。 • 翻訳の誤り

    AmaiSaeta
    AmaiSaeta 2010/12/22
    "本書はBoost.Regexドキュメント( http://www.boost.org/doc/libs/1_39_0/libs/regex/index.html )の日本語訳です。原文書のバージョンは翻訳時の最新である 1.45.0です。"
  • Boost.Xpressive(日本語訳)

    Boost.Xpressive(日語訳) Boost.Xpressive Eric Niebler Copyright © 2007 Eric Niebler1 翻訳にあたって • 書は Boost.Xpressive ドキュメントの日語訳です。原文書のバージョンは翻訳時の最新である 1.45.0 です。2 • 原文の誤りは修正したうえで翻訳しました。 • 外部文書の表題等は英語のままにしてあります。 • 原文に含まれているローカルファイルへのハイパーリンクは削除しています。 • 文中の正規表現、部分式、書式化文字列は regular-expression のように記します。 • マッチ対象の入力テキストは“input-text”のように記します。 • ファイル名、ディレクトリ名は pathname のように記します。 • その他、読みやすくするためにいくつか書式の変更があります。

    AmaiSaeta
    AmaiSaeta 2010/12/22
    "本書はBoost.Xpressiveドキュメント( http://www.boost.org/doc/libs/1_45_0/libs/regex/index.html )の日本語訳です。原文書のバージョンは翻訳時の最新である 1.45.0です。"
  • 使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために

    C++AdventCalendarの記事です。 さて、 生配列使ってますか? tr1::array(boost::array) 使ってますか? 生配列使っていると答えた貴方、 →まず死ね。 はい、arrayが常識ですよね。 さて、とはいえ、 「テンプレートを使うと遅いしコードがでかいし」 「生配列が一番速いしコードが小さいし」 「なのでテンプレート禁止」 なんて話を聞くこともあるかと思いますが、 こういう事をいう人は大抵「テンプレートを書いたことがない」のに言ってます。 なぜか? こういう人が当に心配しているのは「テンプレートが肥大化すること」じゃないのです。 「テンプレートが書けないし読めないのを認めたくないからです」 多くはCの老害だからですが、そういう人は放っておいてC++な人はきちんとテンプレートを使いましょう。 だって多くのテンプレートのコードは大きくもなければ非効率でもないか

    使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために
    AmaiSaeta
    AmaiSaeta 2010/12/20
    そしてそこら辺分かってない老害が作った(結果死滅した)のがEmbed C++規格な訳ですね。
  • 人の話を聞かない人の V8 エンジン。 V8 を C++ に組み込んで遊ぼう - お前の血は何色だ!! 4

    C++ Advent Calendar です。 google の V8 engine を 組み込んで簡易スクリプトにしてしまおうという話です。 C++の言語仕様や boost の話は超絶詳しい人たちがされているので、誰もやらなそうな ぬるいいい加減な話をします。 #間違ってたら突っ込みよろしく!! なぜ V8? Lua ぢゃだめなんですか? C++ から呼び出しやすい 組み込み言語として、 Luaがあります。 しかし、 Luaはコメントが -- から始まったり、 〜end と、 C / C++ に組み込みやすいスクリプト言語なのになぜか pascal チックな文法?という不思議なところがあります。 やはり、 C++ ユーザとしてはコメントは // で書きたいし、ブロックは { } でやりたいですよね (y/Yes) そんなところに、 google の V8 engine があります。 C+

    人の話を聞かない人の V8 エンジン。 V8 を C++ に組み込んで遊ぼう - お前の血は何色だ!! 4
  • One-Phase Construction 入門 〜 Constructor run once. - 野良C++erの雑記帳

    導入 皆さんは C++ と聞いて、まず何を思い浮かべますか? 「C++? そんなの過去の遺物だろ? GC ないとか原始的すぎるじゃん?」 って思う人もいれば、 「いや、 C++ って無闇に複雑すぎて使えない。正直 C 言語で十分でしょ」 って人もいるでしょう。 が、今回は、そういう「不便だ」「キモい」「でも迂闊に dis ると闇の軍団怖いし…」的な論争は*1とりあえず置いておくことにします。 代わりに、 「デストラクタや const は便利だよ!」 「 C 言語と連携が取りやすいのがいいね」 「それ以上に、ゼロオーバーヘッドだし、いざとなれば効率化できるのが素晴らしい」 「普段は効率化なんて意識しなくても使えるしね」 的な「 C++ を使う利点」を考えてみると、 テンプレートと、その応用例である STL が、 C++ を使う利点の中でも特に大きい、 そのことに異論を挟む人は少ないと思います

    One-Phase Construction 入門 〜 Constructor run once. - 野良C++erの雑記帳
  • Boost Fusion Library - Fusion Sequence - Faith and Brave - C++で遊ぼう

    C++ Advent Calendar jp 2010の記事です。 今回は、Boost Fusion Libraryを紹介します。 Boost Fusion Libraryは、タプルのデータ構造とアルゴリズムを提供するライブラリです。 Fusionでは、2つの重要な概念を与えます。 1つは、タプルを異なる型のリストと見なしイテレートする、Fusion Sequenceという概念。 もうひとつは、タプルを名前のないユーザー定義型、ユーザー定義型を名前ありタプルと見なし、それらを相互運用可能にするという概念です。 まず、基的な使い方を見ていきましょう: #include <iostream> #include <string> #include <boost/fusion/include/vector.hpp> #include <boost/fusion/include/for_each.

    Boost Fusion Library - Fusion Sequence - Faith and Brave - C++で遊ぼう
  • std::vector の shrink_to_fit - 野良C++erの雑記帳

    C++0x の std::vector には、新しく shrink_to_fit() メンバ関数が用意されています。 これは「 vector の確保しているメモリ領域を、その大きさに見合ったサイズまで縮小する」関数で、 典型的な使い方は、以下のような感じになります: // std::vector に格納される要素数の見当がつけられない // が、「上限」は分かる。このとき余計な領域の再確保を避けたい std::size_t const limit = 〜〜; // vector に格納される要素の上限 std::vector<T> vec; // まず上限までメモリ領域を確保する vec.reserve( limit ); // vec に格納していく // ... // 格納終了。しかし、 // このままだと巨大なメモリ領域を占有してしまうので、 // vec の確保している領域を「 s

    std::vector の shrink_to_fit - 野良C++erの雑記帳