C++输入排错
答案:2 悬赏:20 手机版
解决时间 2021-05-04 06:14
- 提问者网友:無理詩人
- 2021-05-03 22:17
========================
double num;
cin>>num;
//当符合要求
cout<<"ok"<<endl;
//当不符合要求
cout<<"wrong"<<endl;
========================
符合要求的数据:
(纯数字)
123.0
32
654.765
========================
不符合要求的数据:
(非纯数字)
abc
12e34
23 54
342~
as3
。。。。。
========================
请各位大虾给出解决方案。谢啦
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-05-03 23:41
主要是e和空格不好处理,建议以字符串形式读入,然后再转成double
已经修改,可以通过vc6测试,用unsetf( skipws )替代getline
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
template <class T, class U>
T lexical_cast( U u )
{
stringstream ss;
ss << u;
T t;
ss >> t;
return t;
}
bool cindbl( double& n )
{
string s;
cin.unsetf( ios::skipws );
cin >> s;
cin.setf( ios::skipws );
if ( s.find_first_not_of("0123456789.") != string::npos )
return false;
else
n = lexical_cast<double>( s );
return true;
}
int main()
{
double n;
if ( cindbl( n ) ) cout << "ok"; else cout << "error";
}
全部回答
- 1楼网友:一袍清酒付
- 2021-05-04 00:44
#include <iostream.h>
void main()
{
double a;
if(cin>>a)
{
cout<<"yes"<<endl;
}
else
{
cout<<"no"<<endl;
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯