社区
C++ Builder
帖子详情
在c++中如何判断输入的数据是否是整数
rabbit_zizhu
2008-03-11 10:05:30
在c++中如何判断输入的数据是否是整数.
还有如何判断输入的数据在一个整数的范围呢
...全文
3860
26
打赏
收藏
在c++中如何判断输入的数据是否是整数
在c++中如何判断输入的数据是否是整数. 还有如何判断输入的数据在一个整数的范围呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rabbit_zizhu
2008-04-06
打赏
举报
回复
各位不好意思.由于分数太少,最后这位没分给了.呵呵.将就一下吧.
truelove7283159
2008-03-26
打赏
举报
回复
其实不管从哪里输入的,都是一个字符,是你自己把它弄成整数了。
而且现在麻烦一点点,只是那么一点点。
不管cmd窗口是一个输入的,等下有个方法可以判断的。
文本框输入,程序的命令行、参数 你拿到手就是一个字符串。
1 首先,把从最左面开始是零的过滤掉。
那么剩下的可能就是正负数字了(+XXXXXXXXXXXXXXXx/-XXXXXXXXXXXXXXXXXXXXXx)(x 0~9)
2 计算字符串的长度
2.1 在之前看看定义 msdn里有
_I64_MAX 9223372036854775807
_I64_MIN 9223372036854775807
char I64INTMAX[] = "9223372036854775807";
char I64INTMIN[] = "9223372036854775808";
char INTFLAG[] = "+-";
__int64 x= strlen(I64INTMIN)+1; 算正负号
如果你输入的字符串长度比x大,那么输入的当然不是一个数字了。
2.2
char *p = strInput;//输入字符串
isdigit(*p)!=0 每一个用这个来判断一下是不是( 0~9),不让用isdigit也行,反正你能写得出0~9的ascii码,也知道在那个数值之间。
2.3 确认长度没有问题,是( 0~9),前面有正负号,多少个0没有关系。
__int64 value = 0;
// An example of the _atoi64 function
// with leading and trailing white spaces.
str = " -002309 ";
value = _atoi64( str );
2.4 到这里只能保证你根据输入得到一个整数,到底原先输入的应该看是字符串 还时数字那么在继续
_i64toa( value , buffer, 10 ); // C4996
得到的应该和原来输入的是一样的,这个是因为,假如他原来输入的是9223372036854775828,你得到是一个负数。
不过这个情况你也可以认为他是正确的。就看怎么理解了
2.5 如果是uint64的话稍微麻烦,些因为 _UI64_MAX 18446744073709551615 ,输入18446744073709551616 就是-1了。
同样怎么看是不是整数 就要看你的理解了,和程序处理了。
_ui64toa
_atoi64
-----------------------------------------------------------------------------------------------------------
atoi(str); sprintf
都会有问题的,
不是数字的会爆掉
__int64 时候,取不到
rabbit_zizhu
2008-03-22
打赏
举报
回复
呵呵,谢谢你们哈...
有你们的帮助,问题已解决...
mwq831920
2008-03-21
打赏
举报
回复
赞成楼上lanmuyi。
lanmuyi
2008-03-21
打赏
举报
回复
[Quote=引用 22 楼 mwq831920 的回复:]
赞成楼上lanmuyi。
[/Quote]
赞成楼上mwq831920。 呵呵~
laowang2
2008-03-20
打赏
举报
回复
我说一个办法,把输入的数据向下取整(floor),拿原来的数据和取整后的数据相减比较,在0.00001(具体看你需要的精度)和1之间就是小数,否则是整数。
lanmuyi
2008-03-20
打赏
举报
回复
[Quote=引用 19 楼 rabbit_zizhu 的回复:]
我用的是vc6.0
[/Quote]
string ->char* -> int
函数名: atoi
功 能: 把字符串转换成整型数
用 法: int atoi(const char *nptr);
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int n;
char *str = "12345.67";
n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
或者逐个提取字符串中字符,int resule=0; //记录最后结果
while(没到字符串尾)
{
result=result*10+'当前字符'-'0';
}
rabbit_zizhu
2008-03-19
打赏
举报
回复
我用的是vc6.0
mwq831920
2008-03-18
打赏
举报
回复
如果你用的是BCB, String转Int L: str.ToInt()
rabbit_zizhu
2008-03-18
打赏
举报
回复
不是,如输入的字串附给了String类型的参数str:
bool isInt;//是否参数
for(int i=0;i <str.Length();i++)
{
isInt=false;
for(int j=0;j <10;j++)
{
if(str.SubString(i+1,1)==IntToStr(j))
{
isInt=true;
break;
}
}
if(!isInt)
break;
}
////编译的时候有问题
rabbit_zizhu
2008-03-18
打赏
举报
回复
error C2039: 'SubString' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
error C2065: 'IntToStr' : undeclared identifier
编译的时候出现错误
rabbit_zizhu
2008-03-18
打赏
举报
回复
谢谢你先.
上面那个问题我解决了.但是又出现了一个问题,就是怎样把一个string对象转化成一个int型的值.因为最终我要处理的数据类型还是整型数据
mwq831920
2008-03-18
打赏
举报
回复
倒,你用的是BCB吗?把源程发给我mwq8319202002@yahoo.com.cn
mwq831920
2008-03-17
打赏
举报
回复
不是,如输入的字串附给了String类型的参数str:
bool isInt;//是否参数
for(int i=0;i<str.Length();i++)
{
isInt=false;
for(int j=0;j<10;j++)
{
if(str.SubString(i+1,1)==IntToStr(j))
{
isInt=true;
break;
}
}
if(!isInt)
break;
}
rabbit_zizhu
2008-03-12
打赏
举报
回复
就是用ASCII码来判断吗?说的具体一点阿.谢谢
mwq831920
2008-03-12
打赏
举报
回复
思路:将输入的字串附给一个 String 类型的参数,然后里面的每一个字符是否都是"0"到"9",包含其他字符就判断其不是一个整数!
rabbit_zizhu
2008-03-12
打赏
举报
回复
STL中的numeric_limits类定义了基本数据类型的取值范围信息
//我没接触过STL,可以举个例子吗
rabbit_zizhu
2008-03-12
打赏
举报
回复
C/C++ code try
{
StrToInt(Edit1->Text);
}
catch(EConvertError &e)
{
ShowMessage("·ÇÕûÊý£¡");
}
//不好意思,你写的这些我看不懂,我只是想在DOS下输入,然后进行判断
rabbit_zizhu
2008-03-12
打赏
举报
回复
是在DOS下输入,然后进行判断
samuellei
2008-03-12
打赏
举报
回复
打错了,STL
加载更多回复(6)
C++
判断
用户
输入
是否为正
整数
、
整数
C++
判断
用户
输入
是否为正
整数
、
整数
判断
用户
输入
是否为正
整数
不能
输入
小数 不能
输入
字母、单词 不能
输入
文字 不能
输入
负数 代码: 在这里插入代码片
C++
判断
输入
内容是否为
整数
最近遇到一个小问题,
判断
输入
的内容是否为
整数
。具体方法如下:首先定义接收内容的字符串 string s;调用
C++
的 getline方法,格式如下:getline(cin,s),getline可以接收空格,遇到换行
输入
结束。然后依次
判断
字符串
中
的字符,是否为数字,如果遇到一个非数字的字符,则不是
整数
。具体程序如下:bool isDigit(char a) { if (a - '0' == 0 |...
C++
判断
字符串
是否是
整数
或浮点数
C++
判断
字符串
是否是
整数
或浮点数 在实际写代码过程
中
,我们经常需要知道一串字符串是否为
整数
或是浮点数,当然,若是用
C++
自带的stream等,当然可以非常方便的
判断
,但效率并不高。因此,我们需要编写出对应的函数,用于高效地直接
判断
一串字符串是否为
整数
或者是浮点数(符合
C++
格式的)。 1.
整数
整数
的格式是 “符号(可以没有)+
整数
” 因而,我们除了对开头进行特殊化
判断
,其他地方只需要考察
是否是
数字即可 于是我们可以给出以下代码: //
判断
字符串是否为
整数
(仅
判断
格式,不考虑范围) bool isIn
C++
检测
输入
是否是
整数
学校一道zz题但是检测合法性
输入
这里费了好大功夫。 1、猜价格游戏 编写
C++
程序完成以下功能: (1)假定有一件商品,程序用随机数指定该商品的价格(1-1000的
整数
); (2)提示用户猜价格,并
输入
:若用户猜的价格比商品价格高或低,对用户作出相应的提示; (3)直到猜对为止,并给出提示。 (提示及要求:1,要求使用
C++
的
输入
输出方式(cin, cout),不能使用
C++
判断
一个数是
整数
还是小数
1、
判断
是
整数
还是字符:通过int n = scanf("%d",&a);
判断
n的值即可;再加flush()函数,清晰缓冲区,即可。 2、
判断
整数
还是小数:定义接收内容的字符串bai string s,调用
C++
的getline方法,格式如下:getline(cin,s),getline可以接收空格,遇到换行zhi
输入
结束。然后依次
判断
字符串
中
的字符,是否为数字,如果遇到一个非数字的字符,则不是
整数
。 ...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章