如何使用Stringstream将字符串转换为C 的双打

How to convert strings to doubles in C++ using stringstream

本文关键字:转换 何使用 Stringstream 字符串      更新时间:2023-10-16

我正在尝试从向量拿起字符串,并使用弦线转换为双打。但是,当我运行此代码时:

  double tempDob;
  stringstream ss;
  ss << tempVec[3];
  ss >> tempDob;

我得到了怪异的东西,而不是普通的双倍。这是一个例子:原始字符串(tempvec [3]的COUT):

        15000000
62658722.54
91738635.67
        20
        29230756.5
        12

转换后的双打(tempdob的cout):

1.5e+07
6.26587e+07
9.17386e+07
2.92308e+07
4.70764e+07
3.53692e+07

如何通过弦线正确地将这些字符串正确转换为双打?谢谢!

这样:

istringstream is( somestring );
double d;
is >> d;

尽管您自己的代码当然会有错误处理。

您可以反复使用相同的弦乐:

std::vector<std::string> theVec { "        15000000",
                                  "62658722.54",
                                  "91738635.67",
                                  "        20",
                                  "        29230756.5",
                                  "        12" };
std::stringstream ss;
for (auto const& s : theVec)
{
    ss.clear();
    ss.str(s);
    double d;
    ss >> d;
    std::cout << d << "n";
}