C++ 当要求输入整数并用isdigit检查时,将字符转换为int
最近,我发现使用isdigit可以检查输入的int值是否是整数,而不是字符串或字符。 然而,当我编写一个简短的程序来处理这个问题时,程序从那时起就无法执行 编辑:我在程序中也希望获取无效数据并将其转换为其他数据类型 代码如下:C++ 当要求输入整数并用isdigit检查时,将字符转换为int,c++,C++,最近,我发现使用isdigit可以检查输入的int值是否是整数,而不是字符串或字符。 然而,当我编写一个简短的程序来处理这个问题时,程序从那时起就无法执行 编辑:我在程序中也希望获取无效数据并将其转换为其他数据类型 代码如下: #include <iostream> #include <sstream> #include <string> #include <cctype> using namespace std; int main() {
#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
int enterCFN;
char revisit;
int review(0);
cout << "Enter a digit: ";
cin >> enterCFN;
bool y = isdigit(enterCFN);
if (y == false)
{
// This is the data conversion section
revisit = enterCFN;
revisit = review;
cout << review << "\n";
}
else
{
cout << enterCFN << "\n";
}
return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
int enterCFN;
重新访问;
国际审查(0);
cout>enterCFN;
bool y=isdigit(输入CFN);
如果(y==false)
{
//这是数据转换部分
重新访问=输入CFN;
重访=回顾;
coutenterCFN
是一个int
。它存储一个数字。isdigit()
检查一个字符是否代表一个数字。这些不是同一件事:例如32是一个数字,但char(32)
表示'
(空格)
你想要的是:
if (cin >> enterCFN)
这将立即获取用户的输入并检查其是否有效。无需使用isdigit()
isdigit()
检查给定字符是否为0-9
要验证整数,请执行以下操作:
std::cout << "Enter a digit: ";
std::cin >> enterCFN ;
while (1)
{ if ( std::cin >> enterCFN )
{
// good input
break ;
}
else
{
std::cout << "Enter a digit: ";
// clear stream flags set due to bad input
std::cin.clear();
// get rid of the bad input.
// ignore the rest of the line
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
std::cout>enterCFN;
而(1)
{if(标准::cin>>输入CFN)
{
//好的输入
打破
}
其他的
{
std::cout该程序在我的系统上运行良好isdigit
根据使用int
作为输入,尽管我认为您使用cin>>enterCFN
来解决OP的问题是正确的。我实际上澄清了一点问题。它还将无效数据(应该是int)转换为字符或字符串。我实际上澄清了一点这个问题。它还将无效数据(应该是int)转换为char或string。