做什么取决于高度之后可能出现的其他输入(如果有的话),以及您希望如何处理错误,但要让您开始:
int height2 = 0;
if (unitHeight == "'" && cin >> height2)
{
if (!(cin >> unitHeight2))
{
std::cerr << "hey, " << height2 << " what? give me units baby!\n";
exit(EXIT_FAILURE);
}
// if we get here, then we have height2 and unitHeight2 to work with...
...
}
else if (cin.eof())
{
// might have hit EOF without inches, that could be legal - depends on your program
...
}
else
{
// saw some non-numeric input when expecting height2 - is that ok?
...
}
自从您发布以来,您已经添加了一条评论,说您特别希望在一行中输入此输入,之后用户可以按 Enter 键。要解决这个问题,请将上面的代码用std::string line; if (getline(std::cin, line)) { std::istringstream iss(line); >>above code goes here<< } else { ...couldn't read a line of input...}
.
另外,你说:
用户需要能够输入一个数字,然后是一个测量单位。这可以以英尺/英寸、米或厘米为单位。我已经完成了所有工作
...我希望如此,但请注意,当支持例如 5'11" 和 180cm 时,它有点棘手,因为cin >> height1 >> unitHeight1
,当unitHeight1
是 a时std::string
,将读取 "'11"。如果你制作unitHeight1
achar
那么它往往只会读取 " c" 来自 "cm",所以这两种表示法都不适用。你最好先读一个字符,然后用它来决定是否读另一个....