所以我还是 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 的字符串,也就是 char 数组
double strtod(const char *str, char **endptr);
所以你不能传递类的实例std::string
, 但您可能会使用 c_str
获得指向此对象包含的常量字符数组的指针方法。
eulersGuess.c_str();
或者你可以使用函数 std::stod
它接受 std::string
参数。
关于C++ 'stod()' 不工作, 'strtod()' 在编译期间抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46032881/