【发布时间】:2015-11-29 18:51:03
【问题描述】:
我正在做一个项目,我需要检查正确的输入 (n),我目前有一些代码不允许输入字符串,因为它会再次要求输入正确的数量。我在编写不允许浮点数通过的代码时遇到问题,因为它目前只是忽略了输入的浮点部分。如果这是一个简单的问题,我很抱歉,但我还没有找到解决这个问题的方法。
for(int i=0; i<1; ++i)
{
string b1;
int e;
do
{
getline(cin,b1);
e=atoi(b1.c_str());
}
while(e==0 && b1!="0");
n=e; // where n is the user input
}
【问题讨论】:
-
那么你的问题在哪里?您是否尝试输入浮点数并使用
atoi将其放入integer e?或者你正在做其他事情? -
您可以使用
strtol。它需要一个额外的参数来告诉您它停止解析的位置。如果遇到非数字字符,则该额外参数最终将指向该字符;否则,它将指向终止的 NUL。 -
正如我在原始问题中所写,这部分仅处理字符串,因为它会拒绝任何字符串输入。我试图找出一种对浮动做同样的方法。我只想要 int 输入,我想拒绝 float 输入。
-
Also look at
std::stoi.比strtol稍微麻烦一点,但是会捕捉到值太大而不能适应少一点体操的情况。 -
@user4581301 - 更多的体操。您需要使用
std::stoi和std::strtol进行“try ... catch”,并且使用任何一个都可以轻松检查最后是否有垃圾。
标签: c++ input floating-point int