3

入力から数値を取得して配列に入れるコンソールプログラムを作成しようとしています。ユーザーが「スペース」ボタンを押さない限り、読み込みは続きます。私はいくつかのことを試しましたが、私のプログラムは入力を「スペース」の ASCII コードと比較しません。前もって感謝します!

#include <iostream>
using namespace std;

int main()
{
    int fabcd[25],number_of_items = 0;
    cout << "The read in loop lasts while you don't hit space:\n";
    while((char)cin.get() != 32)
    {
            cin >> fabcd[number_of_items];
            number_of_items++;      
    }   
    return 0;
}
4

5 に答える 5

0

これを試して :

 #include <iostream>
#include <conio.h >
using namespace std;

int main()
{
    int fabcd[25],number_of_items = 0;
    cout << "The read in loop lasts while you don't hit space:\n";
    while( _kbhit() != 32  )
    {
            char ch =getche();
            if (ch != 32 )
            {
           cin >> fabcd[number_of_items];
            number_of_items++;
            }
            else
                break;

    }   
    cout << "\nnumber of items:"<<number_of_items;
    cin.get();
    cin.get();
    return 0;
}
于 2013-03-18T09:52:15.610 に答える
0

スペースの acii コードは 32 です。したがって、64 または 13 に置き換える必要があります。これは、32 へのキャリッジ リターンです。

while((char)cin.get() != 32)

ただし、空白などの一部の文字で cin が停止する可能性があるという問題があります。次のように設定すると、この動作を無効にできます。 cin.unsetf(ios::skipws); C++によると、「\ 0」のユーザー入力チェックはスペースで停止しますか?

于 2013-03-18T09:29:33.537 に答える
0

(char)13 はスペースではなく改行です。

あなたがするポイントではありません:

((char)cin.Get()) !=' '
于 2013-03-18T09:24:51.250 に答える
0

答えは次のとおりです。

int fabcd[25],number_of_items = 0;
cout << "The read in loop lasts while you don't hit space:\n";
char a;
while((a=cin.get()) != ' ')
{

        fabcd[number_of_items]=a;
        number_of_items++;      
}   
return 0;
于 2013-03-18T09:49:19.897 に答える