所以我还是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数组

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


因此您不能传递类std::string的实例,但是您可以使用c_str方法获取指向该对象包含的常量字符数组的指针。

eulersGuess.c_str();


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

[Live on ideone]

关于c++ - C++“stod()”不起作用,并且“strtod()”在编译期间引发错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46032881/

10-10 18:30