1

我需要使用 get 函数并计算已经填充了多少索引我遇到了几个问题。

似乎以这种方式使用 cin.get 只允许我填充数组,并且不允许我计算数组中已填充了多少变量:

#include <iostream>

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

}

我有一种感觉,我需要使用下面的 for 循环,但问题是它不会以 enter 结束,用户必须填充整个数组,我需要能够输入任意数量的字数下限。此外,该示例没有使用哨兵值,因此虽然它似乎可以解决这个问题,但它似乎不是解决方案。

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 回答