如果int是数字c++,则测试将其转换为char
Test converted int to char if it is number c++
我想知道如何测试char是否是数字。int已经被转换为char,稍后我想看看这个char是否是一个数字。
int num = 2;
char number = '2';
char num2 = (char)num;
cout << "Non comverted: " << number << " " << num2 << endl;
cout << "comverted: " << static_cast<int>(number) << " " << static_cast<int>(num2) << endl;
if (isdigit(number))
cout << "number" << endl;
else if (isdigit(num2))
cout << "num2" << endl;
else cout << "none" << endl;
当我运行这个第二个if时也应该能够关联到true。
我之所以希望能够做到这一点,是因为我将许多不同的值存储到一个char数组中,稍后我想知道某个值何时是数字。
Thanx很多
您实际上并没有将num
转换为数字。你的第3行基本上导致:
char num2 = (char)2;
十进制值为2的ASCII字符是而不是数字。事实上,它是不可打印的。将个位数整数转换为可打印的char
的最简单方法是将'0'
添加到其中:
char num2 = '0' + num;
原因是字符0
是ASCII表中的第一个数字,后面紧跟着1、2、3等。
编辑
正如Christian Hackl在评论中指出的那样,c++不需要使用ASCII的实现,尽管可以保证数字0
到9
由连续的整数值表示。
要将个位数从int转换为ascii/utf8字符,有一个非常简单的转换:
char num2 = static_cast<char>('0' + num);
这:
char num2 = (char)num;
没有道理。您将2转换为一个字符,该字符将为STX提供ASCII代码,这是一个特殊字符(http://www.asciitable.com/)。
你可能想要这个:
char num2 = '0' + num;
这样做的目的是给你一个从ASCII"0"开始计数的字符,所以它最多可以工作到9,之后你会得到ASCII表中的其他字符。
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 使用char类型将decimal转换为string,将string转换为decimal
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 将函数参数"const char*"转换为"std::string_view"是
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 转换char*时的值不同
- Boost Python 不会自动转换 char* 数据成员
- 除了转换char*之外,还有更好的方法来获得一个变量值吗?
- 如何跨平台转换char*到long long(64位)
- 用atof转换char数组中的浮点数
- C转换char[]为时间戳;