char ch[4];
char* ptr;
ptr = ch;
while(1)
{
cin >> *ptr;
if(*ptr == '\n')
break;
ptr++;
}
ここでは、ユーザーが ENTER を入力したときに while ループから抜け出そうとするサンプル コードを少し書きましたが、機能していません。私を助けてください。前もって感謝します。
1 文字を取得するには、 を使用しますstd::istream::get
。これは、改行を取得する場合にも機能するはずです。
しかし、改行を取得するまでループで文字を取得する代わりに、次のようなものを使用しないでstd::getline
ください:
std::string str;
std::getline(cin, str);
または、最大 3 文字のみを取得する場合は、次を使用できますstd::istream::getline
。
char ch[4];
cin.getline(ch, 4, '\n');
以下は行を読み取ります。
istream& getline (char* s, streamsize n );
入力を文字の値に読み込んでいます。という*ptr
ことです。データを受け取るためのものである文字の配列へのポインタである単純な ptr だけが必要だと思います。あなたが書いたものは基本的にこれです:
char c;
cin >> c;
>>
Joachim Pileborgが上で指摘しているように、演算子は改行のように空白をスキップするため、それがあなたの意図したものではなく、たとえそうであったとしても機能するとは思いません。一般に、入力の読み取りに関しては、非常に堅牢であることが常に最善です。十分なスペースを提供し、自動的に拡張できる変数を使用するか ( などstd::string
)、システムに空き容量を伝えます ( などfgets()
)。
抽出演算子は先頭の空白をスキップし、後続の空白に遭遇すると実行を停止します。したがって、このようなことをしたい場合は、std::istream::get() または std::istream::getline() を使用します。