-
Python樹林
Python正規表現:貪欲マッチと非貪欲マッチの違い
この記事では、Pythonの正規表現における量指定子(*, +, {}など)が持つ2つのマッチングモード、貪欲マッチと非貪欲マッチの違いについて解説します。 貪欲マッチ(Greedy Matching) デフォルトでは、正規表現の量指定子は貪欲に動作します。これは、指... -
Python樹林
Python正規表現:グルーピングと量指定子の基本
この記事では、Pythonの正規表現モジュールreを使い、テキストパターンをより柔軟に、かつ強力に検索するためのグルーピングと量指定子の基本について解説します。 丸括弧 () を用いたグルーピング 正規表現の中で丸括弧()を使うと、パターンの一部をグル... -
Python樹林
Pythonで正規表現を使わずに電話番号を検索する方法
この記事では、正規表現(regex)という強力なツールを使わずに、Pythonの基本的な文字列操作だけで、テキスト内から特定のパターン(この場合は電話番号)を検索する方法について解説します。この手動のアプローチを理解することは、正規表現の有用性を知... -
Python樹林
Pythonのpyperclipモジュールでクリップボードを操作する方法
この記事では、Pythonプログラムからシステムのクリップボード(コピー&ペースト機能)を操作するためのサードパーティ製モジュール、pyperclipについて解説します。 pyperclipモジュールのインストール pyperclipはPythonの標準ライブラリではないため、... -
Python樹林
Python文字列のstrip(), lstrip(), rstrip()による空白・文字の除去
この記事では、Pythonの文字列の先頭や末尾から不要な文字(デフォルトでは空白文字)を削除した新しい文字列を返す**strip()、lstrip()、rstrip()**メソッドについて解説します。 空白文字の除去 これらのメソッドの最も一般的な用途は、文字列の前後にあ... -
C++樹林
【C++17】filesystemでファイルやディレクトリをコピーする方法
はじめに C++で、ファイルのバックアップを作成したり、ディレクトリ構造を丸ごと複製したりしたい場合があります。 C++17で導入された <filesystem> ライブラリは、このファイルシステムのコピー操作を、OSに依存しない移植性の高いコードで簡単に... -
C++樹林
【C++17】std::filesystem::rename でファイルやディレクトリの名前を変更/移動する方法
はじめに C++で、プログラムからファイルやディレクトリの名前を変更したり、別のディレクトリへ移動させたりしたい場合があります。 C++17で導入された <filesystem> ライブラリは、このための**std::filesystem::rename()**という関数を提供してい... -
C++樹林
【C++17】filesystemでファイルやディレクトリを削除する方法
はじめに C++で、プログラムが生成した一時ファイルや、空になったディレクトリを削除したい場合があります。 C++17で導入された <filesystem> ライブラリは、このファイルシステムの削除操作を、OSに依存しない移植性の高いコードで簡単に行うため... -
C++樹林
【C++17】filesystemでディレクトリ(フォルダ)を作成する方法
はじめに C++で、マクロの実行結果を保存するための新しいフォルダを自動で作成したい、という場面はよくあります。 C++17で導入された <filesystem> ライブラリは、このディレクトリ作成をOSに依存しない、移植性の高いコードで簡単に行うための関... -
C++樹林
【C++17】filesystemでディレクトリ内のファイル一覧を列挙する方法
はじめに C++で、特定のディレクトリに含まれる全てのファイルやフォルダの一覧を取得したい、という場面は頻繁にあります。 C++17で導入された <filesystem> ライブラリは、この「ディレクトリ内のエントリ(ファイルやフォルダ)を走査する」ため... -
C++樹林
【C++17】std::filesystem::exists でファイルやディレクトリの存在を確認する方法
はじめに C++でファイルを開いたり、ディレクトリを作成したりする際、操作の前に「そのパスが本当に存在するか」を確認することは、エラーを未然に防ぐ上で非常に重要です。 C++17で導入された <filesystem> ライブラリは、この存在確認を簡単に行... -
C++樹林
【C++17】std::filesystem でファイルのサイズをバイト単位で取得する方法
はじめに C++でファイル操作を行う際、ファイルのダウンロード進捗を表示したり、読み込みに必要なメモリ量を判断したりするために、ファイルのサイズを知りたい場面があります。 C++17で導入された <filesystem> ライブラリは、このファイルサイズ... -
C++樹林
【C++17】std::filesystemで現在の作業ディレクトリを取得・変更する方法
はじめに C++でファイル操作を行う際、プログラムが現在どのディレクトリを基準に動作しているか、つまり「現在の作業ディレクトリ(カレントディレクトリ)」を知りたい、あるいは変更したい場面があります。 C++17で導入された <filesystem> ライ... -
C++樹林
【C++17】std::filesystem で相対パスを絶対パスに変換する方法
はじめに C++でファイルパスを扱う際、「./sub/file.txt」のようなカレントディレクトリからの相対パスを、「C:\Users\Username\Documents\sub\file.txt」のような完全な絶対パスに変換したい場面があります。 C++17で導入された <filesystem> ライ... -
C++樹林
【C++17】std::filesystem でパスからファイル名 (filename) を取得する方法
はじめに C++で /home/user/document.txt のようなフルパスの文字列を扱う際、「ディレクトリ部分を除いた、純粋なファイル名 (document.txt) だけを抜き出したい」という場面は非常に頻繁にあります。 C++17で導入された <filesystem> ライブラリの... -
C++樹林
【C++17】std::filesystem でパスから拡張子 (.extension) を取得する方法
はじめに C++でファイルパスを扱う際、「document.txt」というパスから、拡張子である「.txt」の部分だけを抜き出したい、という場面は頻繁にあります。 C++17で導入された <filesystem> ライブラリの**.extension()** メンバ関数を使えば、この処理... -
C++樹林
【C++17】std::filesystem でパスから拡張子を除いたファイル名 (stem) を取得する方法
はじめに C++でファイルパスの文字列を扱う際、「document.txt」というパスから、拡張子 .txt を除いた「document」の部分だけを抜き出したい、という場面は頻繁にあります。 従来は、文字列検索で最後の . を探し、それより前の部分文字列を取得する、と... -
C++樹林
【C++】
ライブラリの使い方 | 高品質な乱数を生成する方法 はじめに C言語由来の古い rand() 関数は、乱数の質が低く、現代のプログラミングでは推奨されません。C++11では、より高品質で柔軟な乱数生成のための <random> ライブラリが導入されました。 <random> ライブラリは、2つの要素から構成され... -
C++樹林
【C++】std::shared_ptr の使い方 | 所有権を共有するスマートポインタ
はじめに C++の std::unique_ptr は、リソースの所有者が常に一人であることを保証するスマートポインタでした。しかし、時には、複数の場所から同じオブジェクトを共有して使いたい、という場面があります。 この「所有権の共有」を実現するのが、std::sh... -
C++樹林
【C++】std::unique_ptr の使い方 | メモリ管理を自動化するスマートポインタ
はじめに C++で new を使って動的にメモリを確保した場合、必ず delete を使って手動でメモリを解放しなければならず、もし delete を忘れるとメモリリークの原因になります。 この問題を解決するのが、C++11で導入されたスマートポインタの一つ、std::uni... -
C++樹林
【C++】std::weak_ptr の使い方 | オブジェクトの生存を監視する方法
はじめに C++のstd::shared_ptrは、複数のポインタで一つのオブジェクトの所有権を共有できる、非常に便利なスマートポインタです。しかし、時には「オブジェクトの所有権は持ちたくないが、そのオブジェクトがまだ存在しているかどうかだけを知り、もし存... -
C++樹林
【C++】std::min / max で複数の値から最小値・最大値を取得する方法
はじめに C++で、いくつかの値の中から最も小さい値や最も大きい値を見つけたい場合、if文をネストして比較していくのは手間がかかります。 C++の標準ライブラリ <algorithm> には、このための非常にシンプルな関数 std::min と std::max が用意され... -
C++樹林
【C++17】std::clamp で値を特定の範囲内に収める(クランプする)方法
はじめに プログラミングでは、計算結果やユーザーの入力値が、意図した範囲(例えば0〜100)に収まっていることを保証したい、という場面がよくあります。従来は、if文を使って「もし最小値より小さければ最小値に、もし最大値より大きければ最大値にする... -
C++樹林
【C++】std::swap で2つの変数の値を入れ替える方法
はじめに C++で、2つの変数 a と b の中身を入れ替えたい場合、一時的な変数 temp を使って、 temp = a; a = b; b = temp; と書くのが基本的な考え方です。しかし、この定型的な処理のために、C++の標準ライブラリ <algorithm> には、より簡潔で意図... -
C++樹林
【C++】std::abs で絶対値を求める方法
はじめに C++で、数値の符号(プラス/マイナス)を取り除いた、絶対値(原点0からの距離)を求めたい場合、標準ライブラリの <cmath> (C言語では <stdlib.h> や <math.h>) ヘッダーに用意されている std::abs (absolute valueの略) とい... -
C++樹林
【C++】std::round で四捨五入(最も近い整数への丸め)を行う方法
はじめに C++で浮動小数点数(doubleやfloat)を扱う際、一般的な「四捨五入」のように、最も近い整数に丸めたい場合があります。 この目的のために、C++11以降の標準ライブラリ <cmath> には std::round という、まさにそのための関数が用意されて... -
C++樹林
【C++】floor / ceil で小数点以下を切り捨て・切り上げする方法
はじめに C++で浮動小数点数(doubleやfloat)を扱う際、小数点以下を特定のルールで丸めたい(整数にしたい)場面は頻繁にあります。 標準ライブラリの <cmath> (C言語では <math.h>) ヘッダーには、このための便利な関数が用意されています... -
C++樹林
【C++】sin, cos で三角関数(正弦・余弦)を計算する方法
はじめに C++でグラフィックス処理や物理シミュレーション、その他様々な科学技術計算を行う際、三角関数は不可欠なツールです。標準ライブラリの <cmath> (C言語では <math.h>) ヘッダーには、主要な三角関数が用意されており、簡単に利用す... -
C++樹林
【C++】std::sqrt で平方根(ルート)を計算する方法
はじめに C++で、「2の平方根(√2)」や「9の平方根(√9)」といった、ある数値の平方根(2乗すると元の数になる値)を計算したい場合、標準ライブラリの <cmath> (C言語では <math.h>) ヘッダーに用意されている std::sqrt (square rootの略)... -
C++樹林
【C++】std::pow で累乗(べき乗)を計算する方法
はじめに C++で「2の8乗」や「3.14の2乗」といった、数値の**累乗(べき乗)**を計算したい場合、forループで地道に掛け算を繰り返す必要はありません。 標準ライブラリの <cmath> (C言語では <math.h>) ヘッダーには、このための std::pow と...