首页 > 解决方案 > 为什么 std::stringstream 没有在此代码中打印正确的数字?

问题描述

所以,这很新。在我抓住它并将其放入向量之后,我试图将文本文件的输入从字符串更改为双精度。我想对这些数字执行数学运算,并且在我从字符串转换为双精度后,其中一些数字缺少一两个数字。(文件从 doc 转换为 txt,因为我不知道如何访问 doc 文件,如果这是错误的,请告诉我)。我会在这个问题中包含 txt 文件,但我不知道如何。所以如果有必要,请告诉我如何。随意批评代码,总是愿意学习。我需要它。:)

这些数字采用这种精确的格式 -> 0.00000 并且其中一些在转换后以 0.0000 或 0.000 的形式出现

int main() 
{
    std::string lines;
    std::vector <std::string> numbers{};
    std::vector <double> dbnumbers{};
    std::ifstream myfile("data.txt");

    while (myfile >> lines)
    {
        numbers.push_back(lines);
    }

    for (int i = 0; i < numbers.size(); ++i)
    {
        std::string tempstring;
        tempstring = numbers[i];
        std::stringstream tempd(tempstring);

        double line{};
        tempd >> line;
        dbnumbers.push_back(line);

    }
    for (auto element : numbers) std::cout << element << " / ";
    for (auto element2 : dbnumbers) std::cout << element2 << " / ";


    return 0;
}

标签: c++vectortxt

解决方案


没有您的输入数据很难判断,但您std::cout可能需要std::setprecision增加要打印的位数。


推荐阅读