1

get 関数を使用して、いっぱいになったインデックスの数をカウントする必要があります。いくつかの問題が発生しています。

このように cin.get を使用すると、配列を埋めることしかできず、配列内の変数がいくつ埋められたかを数えることはできないようです:

#include <iostream>

int main()
{
   char line[25];
   cout << " Type a line terminated by enter\n>";
   cin.get( line, 25 );

}

以下のようなforループを使用する必要があると感じていますが、これの問題は、入力で終わらないことです。ユーザーは配列全体を入力する必要があり、任意の量を入力できる必要があります制限未満の文字。また、この例ではセンチネル値を使用していないため、これを解決するように見えますが、解決していないようです。

void fill_array(char array[], int max_count, int& num_used)
{
    char input;
    int index = 0;

    cout << "Enter a text string to test" << endl;
    for( index = 0;index < max_count; index++)
    {
         cin.get(input);
         array[index] = input;
         num_used++;
    }
}
4

1 に答える 1

2

gcountを使用して、最後のフォーマットされていない操作で読み取られた文字数を取得できますcin.get

char line[25];
cout << " Type a line terminated by enter\n>";
cin.get( line, 25 );
std::streamsize read_chars = cin.gcount();
于 2012-11-05T02:47:38.940 に答える