如何从C 中的字符串中获取所有小数号

how to get all decimal number from string in c++

本文关键字:小数 获取 字符串      更新时间:2023-10-16

我正在尝试从C 中的文本中获取值(所有小数号(。但是我有问题,我无法解决

#include "pch.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
int main()
{
    std::ifstream infile("C:\thefile.txt");
    float a, b;
    while (infile >> a >> b)
    {
        // process pair (a,b)
    }
    std::cout << a << " " << b;
}

thefile.txt:

34.123456789 77.987654321

当我运行上述代码时,

a = 34.1235 
b = 77.9877

,但我想要

a = 34.123456789 
b = 77.987654321

我该怎么办?

编辑:我不想打印出A和b。我只希望他们得到确切的值。net

你不能。

float只能给您六个(ISH(十进制重要数字。从字符串转换后,文件中的值无法保存在float中。

首先,您需要切换到double,否则您甚至都不会具有具有完整数值的变量。

然后,要输出,请小心指定所需的精度。

请注意,根据您对这些数据的做法,请考虑浮动点的漏洞,并考虑坚持使用字符串。

我在您的代码中看到了两个主要内容。

  1. float 精确不足以适合您的数据,您需要 double 数据类型。
  2. 您需要设置适当的代表精度才能获得所需的输出。

此代码将为您工作。

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
int main()
{
    std::ifstream infile("newfile.txt");
    double a, b;
    std::cout.precision(11);
    while (infile >> a >> b)
    {
        // process pair (a,b)
    }
    std::cout << a << " " << b;
}

您应该将输入读取到字符串中,然后将其转换为双重(取决于计算机上的浮动中的足够精确度(。您可以直接显示字符串。可能的答案是在这里。

string word;  
openfile >> word;
double lol = atof(word.c_str());