20个字符后停止接受输入

时间:2015-11-20 06:52:20

标签: c++ arrays input char limit

我试图了解如何使用cin.get()。我想只接受20个字符的输入,但我尝试用来检测更多输入停止的任何方法

我接受一次输入一个字符并将其输入如下数组:

void getInput(char arr[], int size) {
    char number = '0';
    for (int i = 0; i < size + 1; i++) {
        char number;
        cin.get(number);
        if ((number >= '0') && (number <= '9')) {
            arr[i] = number;
        }
        if ((number == ' ') || (number == '\n')) {
            break;
        }
    }
}

我尝试过做这样的事情,但你可以看出我的理解并不是很好:

if (number == '\n') {
    done == true;
}

并将整个内容包装在while (!done)中,但是在我输入20个字符或更少字符的情况下这不起作用。

2 个答案:

答案 0 :(得分:0)

您可以初始化变量int count= 1;。每次迭代时,您都可以使用count++;递增它并进行检查

 if (count==20)
     break;

我希望这会有所帮助。

答案 1 :(得分:0)

如果它超过20,你可以将传递的size参数向下舍入为20.然后,在20次迭代后,for循环最多会中断。

#include <iostream>

using namespace std;

void getInput(char arr[], size_t size) {

    const size_t MAX_SIZE = 20;
    if (MAX_SIZE < size) {
        // 'round down' size if it's too big
        size = MAX_SIZE;
    }

    char number = '0';
    for (unsigned int i = 0; i < size; i++) {
        cin.get(number);
        if ((number >= '0') && (number <= '9')) {
            arr[i] = number;
        } else if ((number == ' ') || (number == '\n')) {
            break;
        }
    }
}

int main() {
    char arr[32] = {};
    // even though arr could fit 32 chars
    // only MAX_SIZE=20 numbers at most will be accepted
    getInput(arr, 32);
    cout << arr << endl;
    return 0;
}

我假设sizearr的长度(还不能评论,所以不能问这个),如果是,那么请注意做i < size + 1 ;让i从0到size包含值,然后for循环最终到达arr[size],这不在数组的末尾。请改用i < size