是否可以在 c++ 中同时使用空格和回车键来获取输入?

Is it possible to use both space and enter for taking input in c++?

提问人:JakeTheFella 提问时间:1/19/2023 最后编辑:Remy LebeauJakeTheFella 更新时间:1/19/2023 访问量:33

问:

我想制作一个程序来获取数字列表并读取输入。 问题在于输入将同时使用空格和回车符。这些值是整数。

列表示例:

3
2 1 2
2 2 1
5 5 4 3 2 1

请不要对我太苛刻,因为我只是在学习C++。

#include <iostream>
using namespace std;

int main(){
    unsigned int var;
    cin >> var; cin.get();

    cout << var;
    return 0;
}

因此,当按任一 或 时,我希望它取 的值,而不是只按 。SpaceEntervarSpace

C++ IO 输入流

评论

1赞 Unmitigated 1/19/2023
“我想让它取一个” - 取一个什么?
0赞 Mikel F 1/19/2023
用户输入是编码中不太令人愉快的部分之一。您共享的代码似乎没有按照您的要求执行。
3赞 Some programmer dude 1/19/2023
除非另有配置,否则终端只会在按下该键时向您的程序发送完整的行。Enter
1赞 drescherjm 1/19/2023
您可能希望使用 std::getline() 将不同数量的整数行读入 std::string。并使用 istringstream 将它们读出为 ints。

答:

3赞 Remy Lebeau 1/19/2023 #1

在示例输入中,第一个数字似乎是存在的行数,每行的第一个数字似乎是该行中存在的值数。

如果是这样,那么只需相应地编写代码逻辑,例如:

#include <iostream>
using namespace std;

int main(){
    unsigned int numRows, numValues, var;

    cin >> numRows;
    for(unsigned int i = 0; i < numRows; ++i)
    {
        cin >> numValues;
        for(unsigned int j = 0; j < numValues; ++j)
        {
            cin >> var;
            ...
        }
    }

    return 0;
}

operator>>将 和 视为空格,因此在这种情况下无需区分它们。SpaceEnter