通过cin.getline的用户输入

时间:2020-03-04 20:19:13

标签: c++ c++14

我编写了一个代码,要求用户输入最多132个字符的文本行(数组末尾\ 0的数组大小为133)。

我使用了while循环来捕获用户是否未输入任何内容并按回车键。

#include <iostream>
using namespace std;

const short SIZE = 133;

int main()
{
    char InputArray[SIZE];
    cout << "Enter a line of text up to 132 characters: " << endl;
    cin.getline(InputArray, SIZE);
    count = strlen(InputArray);

    while (count == 0)
    {
        cout << "You did not enter any entry! Try again." << endl;
        cout << "Please enter a line of text up to 132 characters.: " << endl;
        cin.getline(InputArray, SIZE);
        count = strlen(InputArray);
    }

cout << "You had entered: " << InputArray << endl;
cout << "The character count was: " << count << endl;

system ('pause');

return 0;
}

如果用户超过数组大小,如何捕获用户?并生成一条消息文本,指出用户输入无效,然后要求他们再次输入cin.getline?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用get功能。请参阅here。这将只读取您想要的输入。

示例:

#include <iostream>

constexpr size_t numberOfBytes = 6;

int main() {

    std::cout << "\nPlease enter up to " << numberOfBytes-1 << " characters:  ";
    char data[numberOfBytes];
    std::cin.get(data, numberOfBytes);

    std::cout << "\nEntered: " << data << "\n";
    return 0;
}

如果要阅读任意数量的字符,然后再检查大小,请使用std::string。您还是应该做。

所以:

std::string s{};
std::cin >> s;
if (s.length() > ....) {
....
}