- string_view[meta header]
- std[meta namespace]
- basic_string_view[meta class]
- function[meta id-type]
- cpp17[meta cpp]
constexpr basic_string_view substr(size_type pos = 0, size_type n = npos) const;
部分文字列を取得する。
指定された位置pos
からn
文字からなる部分文字列を構築して返す。
size()
- pos
とn
うち、小さい方をrlen
とし、basic_string_view(
data()
+ pos, rlen)
を返す。
#include <iostream>
#include <string_view>
int main()
{
std::string_view sv = "This is a pen";
std::string_view ret1 = sv.substr(5); // 5番目から最後までの文字列を取得
std::string_view ret2 = sv.substr(5, 2); // 5番目から2文字の文字列を取得
std::cout << "1 : [" << ret1 << ']' << std::endl;
std::cout << "2 : [" << ret2 << ']' << std::endl;
// substrはデータを切り取るのではなく、参照位置と参照サイズを変更するだけなので、
// 生ポインタを介せば全体の文字列を復元することはできる。
const char* ret3 = ret1.data() - 5;
std::cout << "3 : [" << ret3 << ']' << std::endl;
}
- substr[color ff0000]
- ret1.data()[link data.md]
1 : [is a pen]
2 : [is]
3 : [This is a pen]
- C++17
- Clang, C++17 mode: 4.0
- GCC, C++17 mode: 7.1
- ICC: ??
- Visual C++: ??