を使用して変数を入力するたびに、Enterキーを押すとcin
、自動的に新しい行に移動します。cin
新しい行に行かなくても使用できる方法があるかどうか知りたいです。コマンドプロンプトの同じ行に複数のものを入れたいと思ってcin
います。cout
これは可能ですか?
7 に答える
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;
}
あまり良くありません。たとえば、印刷以外の文字入力をうまく処理できません。しかし、それはあなたが何をする必要があるかについての考えをあなたに与えるはずです。また、 WindowsAPIのキーボード機能にも興味があるかもしれません。
次のように入力する代わりに、入力にスペースを使用することもできます。
cin >> a >> b >> c;
入力に入力します
10 20 30
それから
a=10
b=20
c=30
他の人が指摘しているように、これはで行うことはcin
できませんが、で行うことはできますgetchar()
。あなたがしなければならないことは次のとおりです。
- を使用して各文字を個別に収集します(たとえば、読み込まれるときに
getchar()
それぞれをaの末尾に追加します)。string
- 各文字を読み取った後、1つの変数の値の終わりに到達したときを決定します(たとえば、または値
' '
を読み込んでいる場合は、入力で1つ以上の文字を検出します)。int
double
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に格納されます。