gpt4 book ai didi

c++ - 将字符串转换为 double C++

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:02 24 4
gpt4 key购买 nike

此代码读取我在 .txt 文件中的一些数据的第一行,第一行值是“6.0”,我稍后会在循环中读取其余数据,我的问题是如何将“行”(字符串)转换为 double (我称之为“实例”)以便我可以在以后的程序中使用它吗?它需要是 double 的,这样我以后可以用其他 double 类型做一些计算。可能是一个非常简单的解决方案,在此先感谢。

注意:我试过使用:

#include <stdlib.h>
double instances = atof(line.c_str());

但它返回 0 而不是正确的值 '6.0'

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
string line;
ifstream infile ("data2.txt");
if (infile.is_open())
{
getline (infile,line);
cout << line << '\n';
infile.close();
}
...
}

最佳答案

您有很多选择。这些都有不同的方法来检查输出的有效性。如果 line 不包含 double,它们中的一些会抛出异常,一些会给出一个您可以检查的返回值。哪一个最适合您完全取决于您的程序。

引入了 C++11 std::stod :

double instances = std::stod(line);

在此之前,有一个容易混淆的名称 std::atof仍然返回一个 double:

double instances = std::atof(line.c_str());

或者您可以使用 std::istringstreamoperator>>提取一个double:

std::istringstream iss(line);
double instances;
iss >> instances;

或者您可以使用 std::sscanf :

double instances;
std::sscanf(line.c_str(), "%lf", &instances);

或者您可以使用 Boost.Lexical_Cast :

double instances = boost::lexical_cast<double>(line);

关于c++ - 将字符串转换为 double C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30429120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com