当要求输入整数并使用isdigit检查时,将char转换为int
Converting char to int when asked to enter an integer and checked with isdigit
最近,我发现使用isdigit来检查输入的int值是否实际上是整数,而不是字符串或字符。然而,当我写了一个简短的程序来处理这个问题时,这个程序从那时起就无法执行
编辑:我在程序中也想获取无效数据并将其转换为不同的数据类型。
这是代码:
#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;
}
有人能纠正我的错误并告诉我我做错了什么吗?
enterCFN
是一个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');
}
}
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将函数参数"const char*"转换为"std::string_view"是
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 如何在虚幻引擎4中将char*转换为TCHAR?
- C++:将模板类型 char 转换为 std::string
- strcmp/char* 转换无法按预期工作
- C++中的SQLite char*转换
- 无法从 const char* 转换为 const char *&
- 在 C++ 中将 char 转换为 int,而无需符号位传播
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 试图使用strCMP时的char转换错误
- 无法从'const char *'转换为'LPCTSTR'
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 使用 static_cast 将 char 转换为 int c++
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 无法将const char转换为字符串构造字符串