> d-6ren">
gpt4 book ai didi

c++ - 我可以使用 stringstream 判断 std::string 是否代表数字吗?

转载 作者:可可西里 更新时间:2023-11-01 17:24:01 25 4
gpt4 key购买 nike

显然这应该用于显示字符串是否为数字,例如“12.5”== yes,“abc”== no。但是我对输入毫无顾忌。

std::stringstream ss("2");
double d; ss >> d;
if(ss.good()) {std::cout<<"number"<<std::endl;}
else {std::cout<<"other"<<std::endl;}

最佳答案

不要使用 good()!测试流是否为 failed or not :

if (ss)

Good 告诉您是否设置了 eofbit、badbit 或 failbit 中的任何一个,而 fail() 告诉您有关 badbit 和 failbit 的信息。您几乎从不关心 eofbit 除非您已经知道流失败,因此您几乎不想使用 good。

请注意,直接测试流,如上,完全等同于:

if (!ss.fail())

相反,!ss 等同于 ss.fail()。


将提取组合到条件表达式中:

if (ss >> d) {/*...*/}

完全等同于:

ss >> d;
if (ss) {/*...*/}

但是,您可能想测试是否可以将完整的字符串转换为 double ,这有点复杂。使用已经处理所有情况的 boost::lexical_cast。

关于c++ - 我可以使用 stringstream 判断 std::string 是否代表数字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4917265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com