cin
を使用して変数を入力するときはいつでも、1つのヒットを入力すると、自動的に新しい行に移動します。改行せずにcin
を使用する方法があるかどうか知りたいです。コマンドプロンプトの同じ行にcin
とcout
を複数表示したいのですが。これは可能ですか?
これにはcin
またはその他の標準入力を使用できません。しかし、あなたが望んでいる効果を得ることは確かに可能です。 Visual Studioを使用しているWindowsを使用しているので、たとえば _ getch を使用できます。次の空白まで読み取り、文字列に結果を格納する例を次に示します。
#include <conio.h> // for _getch
std::string get_Word()
{
std::string Word;
char c = _getch();
while (!std::isspace(c))
{
Word.Push_back(c);
std::cout << c;
c = _getch();
}
std::cout << c;
return Word;
}
それはあまり良くありません。たとえば、非印刷文字入力はあまりうまく処理されません。しかし、それはあなたにあなたが何をする必要があるかについての考えを与えるはずです。 Windows APIキーボード関数 にも興味があるかもしれません。
より多くのユーザーを対象とする場合は、 [〜#〜] sfml [〜#〜] または [〜#〜] sdl [ 〜#〜] 。
次のように入力する代わりに、スペースを入力に使用することもできます。
cin >> a >> b >> c;
そして入力であなたはタイプする
10 20 30
その後
a=10
b=20
c=30
他の人が指摘したように、cin
を使用してこれを行うことはできませんが、getchar()
を使用して行うことはできます。あなたがしなければならないでしょう:
getchar()
を使用して各文字を個別に収集します(たとえば、読み込まれたときにstring
の末尾に各文字を追加します)。int
またはdouble
の値を読み取っている場合、入力で1つ以上の' '
文字を検出することによって) )、次にint
、double
など)。 、その後エラーを確実に処理することは複雑になるため、このためのコードは何も記述していませんが、使用できるアプローチを確認できます。
あなたがやりたいことをcinで達成できるとは思いません。実行できることは、選択した区切り文字を使用して、すべての入力を1行で記述し、入力文字列を解析することです。
それは不可能。 @Bo Perssonを引用すると、これはC++によって制御されるものではなく、コンソールウィンドウです。
gotoxyステートメントを使用してください。たとえば、Enterキーを押して、同じ行に値を入力できます。 3 * 3行列の入力で:
'#include<iostream.h>
#include<conio.h>
void main()
{clrscr();
int a[20][20],x,y;
cout<<"Enter the matrix:\n ";
for(int r=2;r<7;r+=2)
for(int c=2;c<7;c+=2)
{gotoxy(c,r);
cin>>a[r][c];
}
getch();}'
コメントはできませんが、整数の間にスペースを入れると、期待どおりの効果が得られます。これはcin
でも機能します。
int a, b, c;
cin>>a; cin>>b; cin>>c;
値を10 20 30
として入力すると、それぞれa、b、cに格納されます。