小编Chr*_*mer的帖子

解析libc ++和glibc中的双精度时不一致的字符串流行为

使用gccclang编译以下示例时...

#include <sstream>
#include <iostream>

int main() {
    double val;
    std::stringstream ss("6.93758e-310");
    ss >> val;

    std::cout << "fail: " << ss.fail() << std::endl
}

Run Code Online (Sandbox Code Playgroud)

......我得到不同的行为:

  1. 使用gcc,流的failbit ss.fail()未设置,而
  2. 对于铿锵它是设定的

可能需要注意的是,在这两种情况下,errno都设置为ERANGE.

另外,在本地我得到了与clang和gcc相同的行为,除非我明确地使用libc ++和clang(-stdlib=libc++)而不是glibc.

我不确定正确的行为是什么,但我觉得它应该是一致的.

c++ double parsing stringstream

5
推荐指数
1
解决办法
84
查看次数

标签 统计

c++ ×1

double ×1

parsing ×1

stringstream ×1