C++使用atof将字符串转换为双精度浮点数。

14 浏览
0 Comments

C++使用atof将字符串转换为双精度浮点数。

我无法让atof()函数工作。我只希望用户输入值(以十进制数字的形式),直到他们输入'|'并退出循环。我希望这些值最初以字符串形式读入,然后转换为双精度浮点数,因为我发现过去当我使用这种输入方法时,如果输入数字'124',它会退出循环,因为'124'是'|'字符的代码。

我查找并了解到atof()函数可以将string转换为double,然而当我尝试转换时,我收到以下消息:

"没有适合的从std::string到const char的转换函数"。

我似乎无法弄清楚为什么会出现这种情况。

void distance_vector(){
double total = 0.0;
double mean = 0.0;
string input = " ";
double conversion = 0.0;
vector  a;
while (cin >> input && input.compare("|") != 0 ){
conversion = atof(input);
a.push_back(conversion);
}
keep_window_open();
}

0
0 Comments

在C++中,将字符串转换为双精度浮点数(double)通常可以使用atof函数。然而,有时候在使用atof函数时会出现问题,需要进行一些适当的处理。

问题的出现原因是atof函数需要接收一个C风格的字符串(即以null结尾的字符数组),而不是C++的string对象。因此,需要使用string的成员函数c_str()将string对象转换为C风格的字符串。

解决方法是使用以下代码:

atof(input.c_str());

在这里,input是一个string对象,通过调用input的c_str()函数,可以获取到一个C风格的字符串,然后将其作为参数传递给atof函数进行转换。

需要注意的是,c_str()函数返回的指针指向的是string对象中的字符数组,因此在使用atof函数之后,需要确保string对象的生命周期足够长,以免访问已经被销毁的字符数组。

总之,通过使用string的c_str()函数,可以将C++的string对象转换为C风格的字符串,从而解决将字符串转换为双精度浮点数的问题。

0