#include <iostream>
#include <string>
#include <sstream>
using namespace std;
bool isnum(string s)
{
stringstream sin(s);
double t;
char p;
if(!(sin >> t))
/*解释:
sin>>t表示把sin转换成double的变量(其实对于int和float型的都会接收),如果转换成功,则值为非0,如果转换不成功就返回为0
*/
return false;
if(sin >> p)
/*解释:此部分用于检测错误输入中,数字加字符串的输入形式(例如:34.f),在上面的的部分(sin>>t)已经接收并转换了输入的数字部分,在stringstream中相应也会把那一部分给清除,如果此时传入字符串是数字加字符串的输入形式,则此部分可以识别并接收字符部分,例如上面所说的,接收的是.f这部分,所以条件成立,返回false;如果剩下的部分不是字符,那么则sin>>p就为0,则进行到下一步else里面
*/
return false;
else
return true;
}
int main()
{
string s;
while(cin >> s)
{
if(isnum(s))
cout << s << " is a number." << endl;
else
cout << s << " is not a number." << endl;
}
}
c++中怎么判断一个string类型的字符串变量是否为数字?
最新推荐文章于 2025-06-23 19:56:46 发布
本文介绍了一个简单的C++程序,该程序能够判断输入的字符串是否能被解析为有效的数字。通过使用`stringstream`类来尝试将字符串转换为浮点数,并检查是否有非数字字符残留,以此来验证字符串的有效性。
1万+

被折叠的 条评论
为什么被折叠?



