0
char arr[100];
cin.get(arr,100);
  1. これは安全ですか?100文字を超えて入力しても、最後にヌル文字が追加されますか?または私は使用する必要がありますcin.get(arr,99)か?
  2. ENTERと入力すると、行末文字が配列の一部になりますか?
4

2 に答える 2

2

両方の質問に対する答えはここにありますが、繰り返しになります。

  1. メソッドはget最大で文字を読み取りますn - 1。これは、メソッドが読み取る文字数ではなく、バッファーのサイズを想定していることを意味します。このメソッドは、末尾にヌル文字を自動的に追加します。

  2. 改行文字は抽出され、配列に格納されません。

std::getlineまた、と組み合わせて使用​​できる使用を検討することもできますstd::string

于 2012-04-25T23:48:49.237 に答える
1

1)これは安全ですか。つまり、最後にヌル文字が追加されます。100文字以上入力しても。または、cin.get(arr、99)である必要があります。

ここから撮影。

使用している署名はget次のようになります。

basic_istream& get( char_type* s, std::streamsize count );

count - 1ストリーム(この場合は99)から、またはデフォルトで区切られている文字まで、最大で文字を読み取ります\n。したがって、100文字を超える文字を入力すると、を呼び出すとget99文字が読み取られ、最後にnullターミネータが追加されます\0

2)ENTERと入力すると、改行が渡されます。したがって、この文字は実際には配列の一部であるかどうかはわかりません。

いいえ、get区切り文字まで読み上げます。Enterキーを押す\nと、次に読み取られる文字としてストリームに残ります。

アドバイス:これらの関数がどのように機能するかを理解し、C ++でコーディングしてstd::stringいるかどうかを理解するために、リンク先のサイトを使用してください。std::getline

于 2012-04-25T23:50:24.800 に答える