c ++从用户输入读取char和int的简单方法

时间:2014-11-07 18:44:53

标签: c++ input

我想让用户输入至少一个字符,也可能是一个int值,然后读取它(忽略空格)。如果输入的数据格式不正确,我想抛出一个错误。实现这一目标的最简单方法是什么?

示例:

 > Enter character and number:

(1) b     //should be fine (without space)
(2) b     //should also be fine (with space after b, "b ")
(3) b 1   //should also be fine
(4) b 1 n //should not be ok
(5) b b   //should not be ok

我使用过这样的东西:

cout << "Enter a character and number: ";
cin >> myChar;
if (cin.peek() == ' ')
  cin >> myInt;
if (myInt < 1)
  {
    throw myError;
    myInt = 1;
  }

但它无法处理b b条目。或“b”条目。

这似乎是一个相当容易和常见的问题,但我一直无法为此找到一个干净的解决方案.. 是否存在用于从用户读取多个参数的“标准方法”,具有预定义的数据类型顺序?

非常感谢协助!

编辑:这是较大的计算机练习的一小部分,显然这是告知这些事情的正确行为。

所以我最终使用了字符串解析建议。解决方案似乎仍然过于复杂。如果有人偶然发现这个帖子,我会把它留在下面。

getline(cin, inputString);
istringstream iss(inputString);
iss >> myChar;
iss.peek(); // needed to trigger EOF. 
if (iss.fail())
    throw myError("unexpected error\n");
if (iss.eof())
    myInt = 1;
else
{
    iss >> myInt;
    if (iss.fail())
        throw myError("Incorrect input, no int\n");
    ws(iss);
    if (!iss.eof())
        throw myError("Incorrect input, not end of line.\n");
}
cin.clear();

0 个答案:

没有答案