我编写了一个从字符串中提取双精度的函数。就像 asfas123123afaf 到 123123 或 afafas12312.23131asfa 到 12312.23131 一样,使用点作为小数分隔符。
这是代码:
double get_double(const char *str, char sep)
{
char str_dbl[80];
size_t i,j;
char minus;
double dbl;
for (minus = 1, i = j = 0; i < strlen(str); ++i)
{
if (
(str[i] == '-' && minus)
|| (str[i] >= '0' && str[i] <= '9')
|| (str[i] == 'e' || str[i] == 'E')
)
{
str_dbl[j++] = str[i];
minus = 0;
}
}
str_dbl[j] = '\0';
dbl = strtod (str_dbl,NULL);
return dbl;
}
但是现在我想从 ASCII 字符中设置一个用户定义的逗号分隔符 (char sep)(没有 E 或 e,它们是 ^10 的文字)。我怎么能实现它?
让我对此进行说明:我们说分隔符是 ',' 所以字符串是 123123asfsaf,adsd,as.1231 它应该以双精度返回 123123,1231。它识别第一个“,”(从左至右)并忽略所有其他。
我真的很难找到解决这个问题的方法。我曾考虑过 setlocale ,但它似乎不是最好的解决方案。
谢谢!