我可以从istream读取具有不同数字分隔符的双精度值吗?

问题描述 投票:0回答:1

我想在程序中从不同的文本文件中读取double值。某些文件包含格式为“ xx.yyy”(点是分隔符)的双精度,而另一些文件则包含“ xx,yyy”(逗号是分隔符)。我使用c ++流进行读取。

c++ double istream
1个回答
0
投票

如果您提前知道每个文件的格式,则可以使用自定义imbue()imbue()一个std::ifstream,其std::ifstream构面指定所需的std::localestd::locale字符。然后,std::numpunct将能够按预期解析std::numpunct值。

请参见thousands_sep了解如何指定自定义decimal_point。同样的方法也适用于operator>>

[如果您不提前知道格式,则必须先将operator>>作为字符串读取,然后手动解析它们以确定所使用的格式,然后可以double一个[C0然后根据需要将字符串转换为How can I set the decimal separator to be a comma?。如果给定文件中的所有decimal_point都使用相同的格式,则可以对第一个thousands_sep执行此操作,然后根据需要为随后的double进行imbue()然后对std::istringstream执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.