1

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++ にそのような構文はありますか?

4

6 に答える 6

2

すべてのコンテナで動作する、より一般的なバージョンについては、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`

結果は同じになります。

于 2013-04-21T20:32:09.990 に答える
1

あなたが達成しようとしているのは、文字列内から文字列を抽出することです。部分文字列とも呼ばれます。

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"
}
于 2013-04-21T20:29:49.163 に答える