gpt4 book ai didi

c++ - 将字符串转换为整数、 double 、 float 而无需捕获异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:56 27 4
gpt4 key购买 nike

我有一个 string,它可以是 doublefloatint。我想通过函数调用将 string 转换为数据类型。我目前正在使用 stofstoi 等函数,当输入不是 floatint 时会抛出异常.还有另一种无需捕获异常即可转换字符串的方法吗?也许某些函数传递一个指向 float 的指针作为参数,并只返回一个 boolean,表示函数调用成功。我想避免在我的任何代码中使用任何 try catch 语句。

最佳答案

使用 std::stringstream 并捕获 operator>>() 的结果。

例如:

#include <string>
#include <iostream>
#include <sstream>

int main(int, char*[])
{
std::stringstream sstr1("12345");
std::stringstream sstr2("foo");

int i1(0);
int i2(0);

//C++98
bool success1 = sstr1 >> i1;
//C++11 (previous is forbidden in c++11)
success1 = sstr1.good();

//C++98
bool success2 = sstr2 >> i2;
//C++11 (previous is forbidden in c++11)
success2 = sstr2.good();

std::cout << "i1=" << i1 << " success=" << success1 << std::endl;
std::cout << "i2=" << i2 << " success=" << success2 << std::endl;

return 0;
}

打印:

i1=12345 success=1
i2=0 success=0

注意,这基本上就是 boost::lexical_cast 所做的,除了 boost::lexical_cast 抛出一个 boost::bad_lexical_cast 异常失败而不是使用返回码。

参见:http://www.boost.org/doc/libs/1_55_0/doc/html/boost_lexical_cast.html

对于 std::stringstream::good,参见:http://www.cplusplus.com/reference/ios/ios/good/

关于c++ - 将字符串转换为整数、 double 、 float 而无需捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785362/

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