17

を使用して変数を入力するたびに、Enterキーを押すとcin、自動的に新しい行に移動します。cin新しい行に行かなくても使用できる方法があるかどうか知りたいです。コマンドプロンプトの同じ行に複数のものを入れたいと思ってcinいます。coutこれは可能ですか?

4

7 に答える 7

8

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のキーボード機能にも興味があるかもしれません。

より多くのユーザーが必要な場合は、SFMLSDLなどのクロスプラットフォームライブラリを調べてください。

于 2013-03-04T20:16:27.180 に答える
7

次のように入力する代わりに、入力にスペースを使用することもできます。

cin >> a >> b >> c;

入力に入力します

10 20 30

それから

a=10
b=20
c=30 
于 2013-08-29T13:23:30.703 に答える
2

他の人が指摘しているように、これはで行うことはcinできませんが、で行うことはできますgetchar()。あなたがしなければならないことは次のとおりです。

  1. を使用して各文字を個別に収集します(たとえば、読み込まれるときにgetchar()それぞれをaの末尾に追加します)。string
  2. 各文字を読み取った後、1つの変数の値の終わりに到達したときを決定します(たとえば、または値' 'を読み込んでいる場合は、入力で1つ以上の文字を検出します)。intdouble
  3. int変数のテキストの最後に到達した場合は、作成した文字列を適切なタイプ(たとえば、doubleなど)の変数に変換してから、
  4. 必要になる可能性のあるコンテンツを行に出力してから、
  5. 読み込んでいる次の変数に進みます。

エラーを確実に処理することは複雑になるため、このためのコードは作成していませんが、使用できるアプローチを確認できます。

于 2013-03-04T19:41:28.213 に答える
1

あなたがやりたいことはcinで達成できるとは思いません。できることは、選択した区切り文字を使用してすべての入力を1行に書き込み、入力文字列を解析することです。

于 2013-03-04T19:34:54.093 に答える
0

それは不可能。@Bo Perssonを引用すると、これはC ++によって制御されるものではなく、コンソールウィンドウです。

于 2013-03-04T19:34:38.883 に答える
0

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();}
于 2014-03-07T19:53:25.190 に答える
0

コメントはできませんが、整数の間にスペースを入れると、目的の効果を得ることができます。これも動作しcinます。

int a, b, c;
cin>>a; cin>>b; cin>>c;

として値を入力する10 20 30と、それぞれa、b、cに格納されます。

于 2016-09-08T12:40:38.530 に答える