さよなら備忘録

「なにをいまさら」と言われそうな些細なことのメモがわり

C++

enum class を範囲for文でループさせる

C++

C++11で導入された enum class を static_cast で整数型にキャストしてむりくりfor文でループさせてるコードを見かけました。軽く調べたところ begin(), end(), operator*(), operator++()を定義すれば範囲for文で使えるようになるようです。 #include <iostream> usin</iostream>…

Boostライブラリで文字列から半角・全角スペースを削除する

C++

Boost String Algorithms ライブラリを使って指定した文字を削除する。 サンプルは視認しやすくするため、全角スペースをアンダースコアに置換しています。 #include <iostream> #include <boost/algorithm/string.hpp> using namespace std; using namespace boost; int main() { string s1 = " _</boost/algorithm/string.hpp></iostream>…

Boostライブラリでbase64へのコンバートとデコード

C++

エンコード結果を標準出力にコピーする。 #include <iostream> #include <sstream> #include <boost/archive/iterators/binary_from_base64.hpp> #include <boost/archive/iterators/base64_from_binary.hpp> #include <boost/archive/iterators/transform_width.hpp> using namespace std; using namespace boost::archive::iterators; using …</boost/archive/iterators/transform_width.hpp></boost/archive/iterators/base64_from_binary.hpp></boost/archive/iterators/binary_from_base64.hpp></sstream></iostream>

Windowsで時刻を手動変更したときのC++への影響

C++

結論から書くとどうしてこうなるのか全くわかってません。 各仕様や実装の誤解が多分にあると思われるのでご注意下さい。 Windows環境で時刻を手動で変更したときにC++の時間関連のプログラムにどう影響があるかコードを動かしてみました。 検証方法は単純に…