繁体   English   中英

将字符串转换为双C ++

[英]Converting a string to a double c++

这段代码读取了.txt文件中某些数据的第一行,该第一行值为'6.0',稍后我在循环中读取了其余数据,我的问题是如何转换'line'(a字符串)转换为双精度字符(我将其称为“实例”),以便以后在程序中使用它? 它必须是双精度型,因此以后我可以对其他双精度型进行一些计算。 预先感谢您,这可能是一个非常简单的解决方案。

注意:我尝试使用:

#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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM