限制变量上的cin输入数量

时间:2014-08-04 14:23:46

标签: c++ variables input cin

如何限制用户输入我想要的变量数?

#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>

using namespace std;

int main{

    char variable1, variable2, variable3;
    cin >> variable1 >> variable2 >> variable3;   
}

如果用户输入2 3 4 5,我不希望第4个值进入我的下一个输入。有什么想法吗?

我尝试过使用setw(10)来限制,但它似乎也不起作用。

3 个答案:

答案 0 :(得分:0)

尝试使用不同的cins(单独的cins),例如:

cin>>variable1;
cin>>variable2;
cin>>variable3;

如果用户键入“4 5”

,这将阻止保存多个变量并生成错误

答案 1 :(得分:0)

这不是很简单,但它完全可行。

您需要确保程序在获得前三个输入后停止读取输入流,并以空格分隔。如果你使用&#34; getline(t,param,delim)&#34;而不只是&#34; cin&#34;,您将有更多选择。简而言之,getline是库中的一个函数,可以让你(from_somewhere,to_somewhere,stop_reading_here)。对你而言,你将从&#34; cin&#34;流,所以看起来应该是这样的:

getline(cin, random_string_variable_name, ' ');

第三个参数,分隔符,是两个撇号之间的空格。它通过“cin&#39;当它到达第一个空间时结束。如果您尝试此代码:

#include <string>
#include <iostream>

using namespace std;

int main() {

    string variable[3];

    for (int i = 0; i < 3; i++)
        getline(cin, variable[i], ' ');

    for (int i = 0; i < 3; i++)
        cout << variable[i] << " ";

}

你会发现&#34; 1 2 3 4 5&#34;将返回&#34; 1 2 3&#34;。告诉我你是否需要方括号上的解释或&#34;对于&#34;循环,虽然你真的应该首先谷歌,如果你没有。

答案 2 :(得分:0)

当你写作“如果用户输入2 3 4 5,我不希望第4个值进入下一个输入我有。”,我认为你的主要兴趣不是限制输入,而是避免负面额外输入的影响。这可以通过将用户输入读入一个字符串并从字符串中提取整数来实现:

    #include <string>
    #include <iostream>
    using namespace std;

    int main() {

    string line;
    getline(cin, line);
    // parse line to extract the single numbers
    }