タグ

2010年3月26日のブックマーク (6件)

  • C++マニアック,C++,const の使い方,usage of const

    キーワード const は、C++ の変数(オブジェクト)が定数であることを示すものです。「オブジェクトの内容を変更できない」というアクセス制御を行うときに使うわけです。簡単ですが、ポインタと絡むと const を書く位置によって意味が変わるので、このあたり、まとめておきましょう。後半では、クラスと共に使用する場合についても解説します。 最も簡単な場合 ポインタが絡む場合 const なクラスのメンバ変数 const なクラスオブジェクトを使う場合 最も簡単な場合 ページの先頭へ const を使う、最も簡単な場合とは、例えば、変更しない整数の定数を定義するような場合でしょう。次の例を見てください。変数 iL1、iL2 は、定数となり、値を変更できません。 int main() { // int 型変数と const int iL0 = 200; const int iL1 = 200;

    NEO-G
    NEO-G 2010/03/26
    constの場所をよく忘れる・・・
  • 数奇な因子 » Blog Archive » stringstream を再利用するには

    C++ の STL の話。文字列を string に入れて istringstream のコンストラクタに文字列を与えると、そのインスタンスを標準入出力からの入力のようにストリームとして扱えます(というか元からそれが目的か)。 string buf; getline(cin, buf); istringstream iss(buf); while( !iss.eof() ){ string s; iss >> s; cout << s << endl; } 一行に複数の入力があるときはこれがとても便利。でも今までは、上の変数 iss は上のように使用したらそれっきり再利用できず、別の文字列を同様にストリームにしたいときは新しく istringstream 型の変数を用意してました。同じ変数に新しい文字列を与えてまた同じ変数を使いたいと常々思ってたんですが、どうやればいいのかさっぱり分からな

    NEO-G
    NEO-G 2010/03/26
    stringstreamの再利用の仕方
  • cplusplus.com - The C++ resources network

    Tutorials C++ Language: Learn this versatile and powerful programming language. Includes detailed explanations of pointers, functions, classes and templates, among others... Reference Description of the most important classes, functions and objects of the Standard Language Library, with descriptive fully-functional short programs as examples. Browse the C++ Reference Articles User-contributed arti

    NEO-G
    NEO-G 2010/03/26
    stream関係のリファレンス
  • ファイル入出力をごっちゃにしないために

    的には下に行くにつれてWindowsプラットフォームへの依存性が高くなります(例外もありますので注意)。以下に簡単な説明を述べておきます。 Cランタイムライブラリは、C言語で扱われていたファイル入出力の方法をサポートしますが、VC++等では表記の方法が少し変わっています。例えばCの関数であるopen関数の使用は推奨されなくなり、変わりに_open関数となっています(open関数でもコンパイルは出来ますがお勧めしません)。Cランタイムライブラリはさらに「低水準入出力関数」と「ストリーム入出力関数」に分かれます。低水準とストリームの違いは入出力に関して「バッファ」を扱うか否かで、ストリームの方がバッファを利用し高速に読み書きができます。バッファを使用せずOSを直接叩くのが低水準の方で、その分使い方が難しくなっています。 Cランタイムライブラリ(セキュリティ強化版)は、従来のランタイムライブ

    NEO-G
    NEO-G 2010/03/26
    getとgetlineの違い
  • strstream と stringstream

    strstream は文字列のストリーム,です. std::strstream を使ってデータを書き込む場合,「どんどん後ろへと追加していく」ことになります. operator でどんどん追加して,最後に str() で char* を取得できます. #include <strstream> #include <iostream> using namespace std; void hoge() { strstream ss; ss << "hoge" << "fuga" << "hoge" << ends; cout << ss.str() << endl; } 「なんで const char* じゃなくて char* なのか」,とか 「最後に std::ends を入れないと文字列が終端されない」, とか,内部の実装が見え隠れしてる感じのクラスでした. 当たり前に使ってたの

    NEO-G
    NEO-G 2010/03/26
    strstreamからstringstreamへ
  • iostream の仕組み

    (このコンテンツはメールマガジンの STL & iostream 入門に手を加えたものです。「 STL と iostream が使えるかのチェック」等はメールマガジンの方のページをご覧ください) STL がそうだったように、 iostream も非常に高い「カスタマイズ性」を持っています。「ないものは作ればいい」に強く応えてくれます。ですが、そのためにはまず iostream 全体の構造を知っておく必要があります。 iostream のクラスは、だいたい3つのグループに分かれます。これは「ストリームクラス」「フォーマットクラス」「バッファクラス」です。 これまで紹介してきた std::strstream などのクラスは、すべて最初の「ストリームクラス」に属するクラスです。普段使用する場合(つまりカスタマイズする必要がない場合)にはこのストリームクラスしかお世話にならないというわけです。 こ

    NEO-G
    NEO-G 2010/03/26
    iostreamの解説