2017-06-11 19 views
4
string s; 
cin>>s; 

仮定するS = "StackOverflowの"文字列内の1文字のデータ型は配列とは何ですか?

我々はs[3]にアクセスする場合は、今、それはs[3]'c'または"c"なります'c'

を配る必要がありますか?

のように、それはcharデータ型または文字列データ型ですか?

+2

あなたはいつもそれをKOWする[ドキュメント](http://en.cppreference.com/w/cpp/string/basic_string/operator_at)を確認することができます。 –

答えて

8

std::stringは組み込み型ではないため、のs[3]は、文字列テンプレートでこの演算子を定義するメンバー関数への呼び出しです。

あなたはreference page for operator []をルックアップすることによってタイプを見つけることができます。

は、指定された場所posに文字への参照を返します。

あなたが場所3から始まる長さ1のstd::stringを探しているならreferenceおよびドキュメントからconst_referenceは、「メンバータイプ」std::basic_string<CharT> template.

のセクションを参照してくださいタイプを検索するには、代わりにsubstrを使用します。

s.substr(3, 1); // This produces std::string containing "c" 
+1

おそらく、親ページで戻り値の型 "参照"を調べ、テンプレートの使用法を解くことで "char"を得る方法を説明することもできます。 – aschepler

+0

@ascheplerありがとう! – dasblinkenlight

8

オペレータ[]std::string

char& operator[] (size_t pos); 
const char& operator[] (size_t pos) const; 

ためにオーバーロードされるように、それは文字への参照を返すS [3] 'C' または "C" になりますか?

文字 'c'ではなく、文字列 'c'です。

1

std::stringcharのようなネイティブタイプではありませんが、の配列を含むラッパーを使用して文字列を作成します。

std::string単に従って、Cアレイオペレータは[]指定されたインデックスでcharを返すためにオーバーロード:

s[3]'c'又は"c"だろうか?

回答:'c'

関連する問題