char arr[100];
cin.get(arr,100);
- これは安全ですか?100文字を超えて入力しても、最後にヌル文字が追加されますか?または私は使用する必要があります
cin.get(arr,99)
か? - ENTERと入力すると、行末文字が配列の一部になりますか?
両方の質問に対する答えはここにありますが、繰り返しになります。
メソッドはget
最大で文字を読み取りますn - 1
。これは、メソッドが読み取る文字数ではなく、バッファーのサイズを想定していることを意味します。このメソッドは、末尾にヌル文字を自動的に追加します。
改行文字は抽出されず、配列に格納されません。
std::getline
また、と組み合わせて使用できる使用を検討することもできますstd::string
。
1)これは安全ですか。つまり、最後にヌル文字が追加されます。100文字以上入力しても。または、cin.get(arr、99)である必要があります。
ここから撮影。
使用している署名はget
次のようになります。
basic_istream& get( char_type* s, std::streamsize count );
count - 1
ストリーム(この場合は99)から、またはデフォルトで区切られている文字まで、最大で文字を読み取ります\n
。したがって、100文字を超える文字を入力すると、を呼び出すとget
99文字が読み取られ、最後にnullターミネータが追加されます\0
。
2)ENTERと入力すると、改行が渡されます。したがって、この文字は実際には配列の一部であるかどうかはわかりません。
いいえ、get
区切り文字まで読み上げます。Enterキーを押す\n
と、次に読み取られる文字としてストリームに残ります。
アドバイス:これらの関数がどのように機能するかを理解し、C ++でコーディングしてstd::string
いるかどうかを理解するために、リンク先のサイトを使用してください。std::getline