サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは本日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。
たとえばある文字列からスペース、タブ、改行を削除したい場合にはどうやって書くんだろう? Split + Join? string str2 = string.Join("", str.Split(' ', '\t', '\r', '\n')); 文字列の Replace? string str2 = str.Replace(" ", ""); str2 = str2.Replace("\t", ""); str2 = str2.Replace("\r", ""); str2 = str2.Replace("\n", ""); IndexOfAny + Remove? string str2 = str; int index = 0; char[] c = new char[] { ' ', '\t', '\r', '\n' }; while ((index = str2.IndexOfAn
これは何? どーにもこーにもお仕事に使っているC++になじめないので、苦手な部分、知らなかった部分を取りまとめてブログに書くシリーズです。 C++脱初心者を目指す人レベルと思ってます。 ちなみに環境は、主にVisual C++ 2005 Express EditionとVisual C++ 2005です。 と、言うわけで何回続くか判らないけど、初期化リストについて。 サブクラスのコンストラクタの順序 スーパークラスがあれば、それのデフォルトコンストラクタを宣言の左順に実行 スーパークラス内では、1〜4の処理を再帰的に実行 クラスメンバに実体のクラスがあれば、それのデフォルトコンストラクタを実行 自身のコンストラクタの実行 通常のサブクラスのコンストラクタの弱点 スーパークラスで引数つきのコンストラクタを呼べない。 任意の順番で、コンストラクタを呼べない そこで初期化リストですよ。 初期化リ
C言語 目的別 画面への文字出力 画面へ1文字単位で出力 画面へ1行単位で出力 画面へ書式付きで出力 可変個引数を書式付き表示 キーボードから文字入力 入力を1文字単位で取得 入力を1行単位で取得 入力を書式付きで取得 ストリームに1文字戻す 文字列データの入出力 文字列から書式付きで取得 文字列へ書式付きで出力 可変個引数を書式付き出力 ファイルオープン ファイルを開く ファイルを閉じる ファイルオープンのモード 標準入出力について ファイルの読み込み テキストファイルの読込 空白区切りファイルの読込 CSVファイルの読込 バイナリファイルの読込 ファイルの書き込み テキストファイルの書込 CSVファイルの書込 バイナリファイルの書込 可変個引数をファイルへ書込 ファイル関連 ファイル位置の取得 ファイル位置の設定 ファイル位置の取得2 ファイル位置の設定2 ファイル位置を先頭に戻す フ
スタックオーバーフロー 値渡しでは、関数を呼び出すたびに、引数に渡したデータがコピーされ、スタックに積まれます。そのため、サイズの大きいデータを値渡しで渡していると、実行時にスタックが溢れてしまうことがあります。これは、C言語でもC++言語でも同様です。 コピーによるオーバーヘッド 値渡しでは、関数を呼び出すたびに、引数に渡したインスタンスのコピーが発生します。このオーバーヘッドのために、参照渡しに比べて、パフォーマンスが悪くなります。 C言語でも、サイズの大きい構造体は参照渡しとして、パフォーマンスの悪化を防ぐ、という指針が知られています。C++言語の場合は、データサイズの他に、データの複雑さも影響してきます。というのも、インスタンスのコピーが行われる際に、コピーコンストラクタが呼び出されるためです。 複雑な構造を持つクラスであれば、コピーコンストラクタに複雑なコピー処理が実装されている
C++ の string と vector の reserve() の挙動 C++ の string と vector には前もって容量を確保するための reserve() というメンバ関数があります。何気なく使っていた関数ですが最近になって興味深い挙動に気づきました。 reserve() の基本 string と vector の reserve() は前もって容量 (capacity) を確保しておくためのメンバ関数です。前もって容量を確保 (reserve) しておけば、データの追加時に発生する再割り当て (reallocation) を防ぐことができ、効率的です。 たとえば、何もしないで文字列に 1,000文字追加した場合、(内部的に倍々で容量を増やしていくため)10回程度の再割り当てが発生しますが、 s.reserve(1000) のように容量を確保しておけば 1回の割り当て (
すぐに忘れるのでメモ.std::vector には reserve() メソッドと resize() が存在しますが,これらのメソッドと size() の関連があやふやだったのでテストをしてみました. #include <vector> #include <iostream> int main(int argc, char* argv[]) { // TEST 1: コンストラクタでサイズを指定した場合. std::vector<int> v1(512); std::cout << "TEST 1: size: " << v1.size() <<", capacity: " << v1.capacity() << std::endl; // TEST 2: デフォルトコンストラクタで初期化した直後. std::vector<int> v2; std::cout << "TEST 2: si
ポインタを配列やvectorで管理している時にSIGSEGV(不正アクセス)発生 vectorの末尾方面に入っているポインタ変数をdeleteした時に、プログラム終了時に不正アクセス。 vector実体をコピーしたのに中身にアクセスすると不正アクセス。 原因 同じクラスの複数のインスタンスをvectorや配列に入れて管理する事はよくある話で、SIGSEGVで墜ちるのもよくある話なので、その原因のヒントをば。 ポインタ配列は主にCで使う話なので今回はvectorで。 往々にしてこんなコードを書いてしまったりします。 std::vector<Hoge*> vecHoge; …… Hoge* pPointer = new Hoge(); // Hogeの新しいインスタンスの作製 vecHoge.push_back(pPointer); // vectorの最後に今作ったHogeインスタンスを追加
なんか,std::ifstream のバイナリモードでファイルの読むのが,すごくツライんですけど,気のせいだろうか。 #include <fstream> #include <iostream> #include <string> static const ::size_t BUFSIZE = 1024; int parse(const std::string& path) { std::ifstream f; try { char buf[BUFSIZE]; // open() のために例外設定 f.exceptions(std::ios::eofbit | std::ios::failbit | std::ios::badbit); f.open(path.c_str(), std::ios::in | std::ios::binary); // read() のために例外再設定 f.
コードのドキュメント付け 特殊ドキュメント・ブロック 特殊ドキュメント・ブロックは、C または C++スタイルのコメントブロックにマークを付け加えたもので、Doxygenはこれをドキュメント断片と認識して、ドキュメントを生成します。 PythonとVHDLコードについては、別のコメント表記規則があります。セクションPython での特殊ドキュメント・ブロック と VHDL での特殊ドキュメント・ブロック で説明します。 各コード要素について、説明形式が2(3の場合も)種類あり、これらがドキュメントを形成します。それは、要約説明と 詳細説明で、どちらもオプションです。メソッドと関数については、もうひとつの形式があり、いわゆる"本文内"説明で、メソッドや関数の本体内のコメントブロックの連結からなります。 ひとつ以上の要約説明または詳細説明を指定できます。(ただし、出現順序が指定されていないため
For this discussion, I am using Windows Mobile 5 for the Smartphone. The version is not critical, though, as the data-access concepts presented remain the same regardless of version. After installing the .NET Compact Framework 2.0 with SP2 and the appropriate Windows Mobile SDK, you must also install ActiveSync (for Windows® XP) or Windows Mobile Device Center (for Windows Vista®). These are neede
12月25日から来年2月1日にかけて、「第一回真の闇プログラマ認定プログラミングコンテスト」なるものが開催されるらしい(ATNDでの告知、コンテストページ)。 概要は下記のとおり。 近年、C++闇の軍団というC++0x原理主義者が地下活動から私のテリトリーであるグラフ理論のUStream配信を行っているという情報を得た。 (中略) よって、どっかの中二病者がのたまっている闇プログラマーではなく、C++闇の軍団に抵抗しうる真の闇プログラマを養成し、ゆくゆくはC++闇の軍団の対抗勢力となりうる真の闇プログラマの部隊を創設する予定である。 その部隊の志願者や適合者を選別するのが今回のプログラミングコンテストの真意である。奮って参加をして欲しい。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く