#8 C++で学ぶ文字列操作の基本

C++の文字列操作は、`std::string`という型を使うのが現代的な基本の書き方です。この記事では、C++における文字列操作の基本と、注意しておきたい落とし穴を解説します。

文字列を連結する

std::string greeting = "こんにちは、" + name + "さん";

`std::string`同士であれば、`+`を使った連結がそのまま使えます。既存の文字列に追加する場合は`+=`や`append`メソッドも使えます。

greeting += "。よろしくお願いします。";

よく使う文字列操作

  • name.length() 文字数を調べる(バイト数であることに注意、後述)
  • name.substr(0, 3) 一部分を取り出す(開始位置と長さを指定)
  • name.find("A") 特定の文字の位置を探す(見つからなければ`std::string::npos`)
  • name.replace(0, 2, "XX") 一部分を置き換える

文字列を数値に変換する

文字列を数値に変換したい場合は`std::stoi`(整数)や`std::stod`(小数)、逆に数値を文字列にしたい場合は`std::to_string`を使います。

int num = std::stoi("123"); std::string s = std::to_string(456);

文字列を分割する

C++の標準ライブラリには、他言語の`split`のような文字列分割の関数が長らく用意されていませんでした。`std::stringstream`を使うのが伝統的な方法です。

#include <sstream> std::stringstream ss("a,b,c"); std::string item; while (std::getline(ss, item, ',')) { std::cout << item << std::endl; }

C++ならではの注意点

C++には、古くからある`char`の配列を使った文字列の扱い方と、現代的な`std::string`を使った扱い方の両方が存在します。古い書き方は`+`による連結ができないなど制約が多いため、特別な理由がない限り、`std::string`を使うことが強く推奨されています。学習中に見かける情報が、どちらの書き方を前提にしているか意識しておきましょう。また、`length()`が返すのはあくまでバイト数であり、日本語のようなマルチバイト文字を含む文字列では「文字数」とは一致しない点にも注意が必要です。日本語を正確に1文字ずつ扱いたい場合は、UTF-8を意識したライブラリを別途検討する必要があります。

まとめ

C++の文字列操作は`std::string`を使うのが基本です。数値との相互変換には`stoi`/`to_string`、分割には`stringstream`が使えます。古い書き方との違いや、マルチバイト文字の扱いにも注意しながら、現代的な機能を活用しましょう。

コメント

このブログの人気の投稿

#11 Rustで学ぶエラーハンドリングの基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本

#19 Goで学ぶテスト(単体テスト)の基本