substrとは
- C++におけるstd::stringから一部の文字列を取り出す処理(例:「Hello world!」から「world」のみを取り出す)
- ↓↓本記事でも参考にした日本語リファレンス
使い方
引数の指定方法
第1引数:pos
- 何文字目から切り出すかを指定。
- 先頭を0文字目とカウントする点に注意。
第2引数:n
- 合計で何文字取り出すかを指定。
- 指定しない場合は、第1引数で指定した文字から末尾まで取り出す。
- 文字サイズをオーバーする値や負の数を指定した場合、エラーは出ずに末尾まで取り出す。
使用例1:基本的な使用
ソースコード
#include <iostream> #include <string> int main() { // 操作したい文字列を宣言して表示 std::string s = "abcdefg"; std::cout << "s = " << s << std::endl; // 2文字目(c)から末尾まで取り出す std::string a = s.substr(2); std::cout << "s.substr(2) = " << a << std::endl; // 2文字目(c)から3文字だけ取り出す std::string b = s.substr(2, 3); std::cout << "s.substr(2, 3) = " << b << std::endl; }
実行結果
s = abcdefg s.substr(2) = cdefg s.substr(2, 3) = cde
使用例2:エラーではないが指定した数値と異なる動作
ソースコード
#include <iostream> #include <string> int main() { // 操作したい文字列を宣言して表示 std::string s = "abcdefg"; std::cout << "s = " << s << std::endl; // 2文字目から12文字取り出す(オーバーするため末尾まで取り出される) std::string c = s.substr(3, 12); std::cout << "s.substr(3, 12) = " << c << std::endl; // 2文字目から-1文字取り出す(2文字目から末尾まで取り出される) std::string d = s.substr(3, -1); std::cout << "s.substr(3, -1) = " << d << std::endl; // 第1引数が未指定の場合(全部取り出される) std::string e = s.substr(); std::cout << "s.substr() = " << e << std::endl; }
実行結果
s = abcdefg s.substr(3, 12) = defg s.substr(3, -1) = defg s.substr() = abcdefg