C++ で文字列、配列、またはベクトルの特別な部分を取得するにはどうすればよいですか? Pythonでは、次のようになります。
a = "hello" #string
b = [1,2,3,4,5] #list
a[1:4] #from index 1 to 4
b[2:4] #from index 2 to 4
結果:
"ell"
[3,4]
C++ にそのような構文はありますか?
すべてのコンテナで動作する、より一般的なバージョンについては、eg を参照してくださいstd::copy
。
これは、たとえば、いくつかのアイテムをベクターの一部から新しいベクターにコピーするために使用できます。
std::vector<int> b = { 1, 2, 3, 4, 5 };
std::vector<int> sub;
std::copy(std::begin(b) + 2, // Start at "index" 2
std::begin(b) + 5, // Copy until (but NOT including) index 5
std::back_inserter(sub)); // `back_inserter` calls `push_back` on `sub`
この後、ベクトルsub
にはリスト 3、4、5 が含まれます。
イテレータ関数の詳細については、このリファレンスなどを参照してください。
N 個のエントリをコピーする場合は、first/one-beyond-last を使用する代わりに、次のように使用できますstd::copy_n
。
std::copy_n(std::begin(b) + 2, // Start at "index" 2
3, // Copy three items
std::back_inserter(sub)); // `back_inserter` calls `push_back` on `sub`
結果は同じになります。
あなたが達成しようとしているのは、文字列内から文字列を抽出することです。部分文字列とも呼ばれます。
C++ では、std::string クラスがこの機能を容易にします。
std::string クラスの substr メンバー関数を参照してください。( http://www.cplusplus.com/reference/string/string/substr/ )
簡単な例:
void some_fuction() {
std::string my_string("Hello");
std::string my_sub_string(my_string.substr(1, 3)); // Will contain "ell"
}