将字符数组转换为float?

时间:2013-12-16 03:21:14

标签: c++

我正在编写一个非常基本的命令行C ++应用程序,它在执行时接受参数。

我今天刚刚开始使用C ++,而且很明显你只能将char**作为参数的数据类型。我想把两个float作为参数(稍后将它们加在一起),但我似乎无法将字符数组转换为浮点数。

我已尝试static_cast<float>(argv[0])stof(argv[0])来转换值,并且两者都给出了编译器错误(无法分别转换和未在作用域中定义)。

如果回答任何问题,我正在使用Code::Blocks IDE

我的代码:

#include <iostream>
#include <string>

/**
 * author: 2mac
 *
 */

using namespace std;

void derp();
float getSum(float num1, float num2);

int main(int argc, char** argv)
{
    float num1 = static_cast<float>(argv[0]);
    float num2 = static_cast<float>(argv[1]);

    if (argc != 0 || argc != 2)
        cout << "Usage: hello-world [args]\nargs: none OR <num1> <num2> to be added together" << endl;
    else
    {
        switch (argc)
        {
        case 0:
            derp();
            break;
        case 2:
            derp();
            cout << num1 << " + " << num2 << " equals " << getSum(num1,num2) << endl;
            break;
        }
    }
    return 0;
}

void derp()
{
    cout << "Hello, world!\n";
    cout << "It's time to lern some C++!" << endl;
}

float getSum(float num1, float num2)
{
    return num1 + num2;
}

3 个答案:

答案 0 :(得分:3)

使用它将输入转换为浮点数,

double f1, f2;
if (argc == 2)
{
    f1 = atof (argv[0]);
    f2 = atof (argv[1]);
}

答案 1 :(得分:1)

C ++中的char**只是一个指向字符指针的指针,因此无法直接转换为float(或任何数值)因此您的第一个示例将失败。您可以使用中间函数atofstrtof(注意str tof,而不是stof,为什么第二个示例失败)转换这些值,假设您确定它们实际上在{{ 1}}形式。

答案 2 :(得分:1)

您只是通过类型转换将char *变量转换为float。它会将指针的值转换为float,而不是要浮动的字符串。

您需要使用atofstrtof等函数将字符串转换为float。或者你可以编写自己的函数来将字符串转换为float。