Вам необходимо включить заголовок <cstdlib>
#include <cstdlib>
и использовать функции strtod
и strtol
(или atoi). Например,
double a = std::strtod( argv[1], nullptr );
double x0 = std::strtod( argv[2], nullptr );
int n = std::atoi( argv[3] );
Вот демонстрационная программа
#include <iostream>
#include <cstdlib>
int main()
{
const char *s1 = "123.45";
const char *s2 = "100";
double d = std::strtod( s1, nullptr );
int x = std::atoi( s2 );
std::cout << "d = " << d << ", x = " << x << '\n';
return 0;
}
Ее вывод
d = 123.45, x = 100
, если вместо второго параметра, равного nullptr
, указать действительный указатель, то вы также можете проверить, что строка действительно содержит действительное число. См. Описание функций.
Другой подход заключается в использовании стандартных строковых функций std::stod
и std::stoi
, объявленных в заголовке <string>
, например,
double d = 0;
try
{
d = std::stod( argv[1] );
}
catch ( const std::invalid_argument & )
{
// .. some action
}