ann*_*ann 0 c++ cin visual-c++
我是C++的新手.我写了一个函数,我希望用户输入一个整数值.我知道如何使用以下方法阻止输入字符:
if(!(cin>>a))
Run Code Online (Sandbox Code Playgroud)
要么
if (cin.fail())
Run Code Online (Sandbox Code Playgroud)
哪里a是类型int.如果用户首先输入字符然后输入例如:ab12代码的数字,但是如果用户输入相反的方式,例如12ab,12将其作为输入值.我怎么能防止这种情况?
试试这个:
#include <sstream>
#include <string>
std::string line;
int n;
if (std::getline(std::cin, line))
{
std::istringstream iss(line);
if (iss >> n >> std::ws && iss.get() == EOF)
{
// success, n is now a valid int
}
}
Run Code Online (Sandbox Code Playgroud)
或者在循环中可能更有用:
for (std::string line; std::getline(std::cin, line); )
{
std::istringstream iss(line);
if (!(iss >> n >> std::ws && iss.get() == EOF))
{
std::cout << "Sorry, did not understand, please try again.";
continue;
}
std::cout << "Thanks. You said: " << n << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |