我在寫一個非常基本的命令行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;
}
的argv [0]將是你的程序的名稱。第一個參數使用argv [1],第二個參數使用argv [2]等。但是,無論何時使用argv [1 ... n],都應該檢查argc是否足夠大。它始終有一個至少爲1的值(程序名始終在argv [0]中),並且對於命令行上的每個參數都會加1。所以你的支票應該是關於argc == 1或3而不是0和2.你的支票似乎是不正確的。 !=與一個或。 – Scooter