C++ 'stod()'不起作用,'strtod()'编译过程中抛出错误

C++ 'stod()' not working, and 'strtod()' is throwing an error during compilation

本文关键字:过程中 错误 编译 出错 不起作用 stod C++ strtod      更新时间:2023-10-16

,所以我仍然是C 的新手,我想看看是否可以使用以下代码基于用户输入来打印结果。

代码:

/* Input Example */
// Initialization
// Euler's Constant
double eulersConstant = rand();
// Euler's Guess
string eulersGuess;
// Euler's Guess (Double)
double eulersGuessDouble;
// Print
cout << "What is Euler's Constant?";
// Input
getline(cin, eulersGuess);
// Update > Euler's Guess (Double)
eulersGuessDouble = strtod(eulersGuess);
/* Logic
   If
   Euler's Guess (Double) is Euler's Constant.
   > Print
*/
if (eulersGuessDouble == eulersConstant)
   cout << "tYour guess was right! -- 'Outstanding'" << endl;
else
   cout << "tYour guess was wrong! -- 'One in a million chance there...'" << endl;

当我从Windows命令提示符中使用g++对此进行编译时,我会收到此错误:

Learning C.cpp:116:47: error: cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'const char*' for argument '1' to 'double strtod(const char*, char**)'
     eulersGuessDouble = strtod(eulersGuess);
                                           ^

当然,所有这些代码都在int main()函数内。我认为问题可能来自strtod()功能,但对此的任何帮助都将不胜感激。

函数 strtod接受类似C的字符串aka char Array

double strtod(const char *str, char **endptr);

因此,您 CANT 通过类std::string的实例,但是您可以将其指向使用c_str方法包含的Contand Chararacter数组。

eulersGuess.c_str();

或您可以使用接受std::string参数的函数std::stod

[live in Ideone]