C++

std::ostringstream を初期化して再利用する方法

C++

std::ostringstream::str で "" を引数に入れてバッファをクリア std::ostringstream::clear で内部状態をクリアリセットする #include <sstream> int main() { std::ostringstream ss; // ostringstream にバッファを入れる ss << "hoge"; // 1 ss.str(""); // 2 // </sstream>…

Effective C++ 第三章 その2

C++

項目11: 未定義private関数よりも =delete を優先する C++ が必要に応じて自動的に作成する関数 = 特殊メンバ関数 その代表がコピーコンストラクタとコピー代入演算子 C++98 では private にすることで対応していた この関数にアクセスしようとしても、未リ…

Effective C++ 第三章 その1

C++

項目7: オブジェクト作成時の {} と ()の違い 初期値の設定方法は以下の3つ {} = () ユーザ定義型では、初期化構文によって呼び出される関数が異なる Widget w1; // デフォルトコンストラクタを呼び出す Widget w2 = w1; // コピーコンストラクタを呼び出す …

Effective C++ 第二章

C++

項目5: 明示的宣言よりも auto を優先する auto で宣言することのメリット 複雑な型宣言の省略 template<typename It> void f(It b, It e) { while (b != e) { typename std::iterator_traits<It>::value_type cV = *b; // auto cV = *b; } } 未初期化のエラーを防げる auto </it></typename>…