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