Есть ли разница между "static_cast" и "atof" при конвертации c_str в float? - PullRequest
0 голосов
/ 18 апреля 2020

Я видел некоторый синтаксис, как:

float f1 = static_cast<float>(atof(str.c_str())); 

От: https://books.google.ca/books?id=YVG7DwAAQBAJ&pg=PA712&lpg=PA712&dq=static_cast (atof и источник = бл & отс = qgIhvelu8w & сиг = ACfU3U2vID_3-O2geKQDROTnSR50iL6kKQ & гектолитров = еп & са = X & вед = 2ahUKEwipqMCVsfLoAhXTUs0KHfp2BSsQ6AEwAnoECAwQKQ # v = OnePage & д = static_cast (atof & F = false

Я также пробовал преобразование без "static_cast":

float f2 = atof(str.c_str());

Они оба работают. Пожалуйста, смотрите прикрепленную программу.

#include <iostream>
#include <string>

using namespace std;

int main ()
{
  string str ("123.45");

  float f1 = static_cast<float> (atof (str.c_str()));
  float f2 = atof (str.c_str());

  cout << "f1: " << f1 << endl; // prints f1
  cout << "f2: " << f2 << endl; // prints f2

  return 0;
}

Я могу получить точно такой же результат:

f1: 123.45

f2: 123.45

Мой вопрос: почему люди используют первый вместо второго? какая разница? Я давно искал это, но не нашел никакого связанного ответа. Заранее спасибо!

...