2017-09-04 7 views
0

私はまだC++が新しく、以下のコードを使用してユーザ入力に基づいて結果を出力できるかどうかを確認したい。C++ 'stod()'が動作していません。 'strtod()'がコンパイル時にエラーを投げています

コード:

/* 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()関数から発生している可能性があると思いますが、これについての助けに感謝します。

+0

http://en.cppreference.com/w/cpp/string/byte/strtof – juanchopanza

答えて

2

機能strtodは、クラスstd::stringのように、あなたカントパスインスタンス

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

C-のような文字列別名のchar配列を受け入れていますが、このオブジェクトがc_strメソッドを使用して含まれている一定のchararacter配列へのポインタを得ることができます。

eulersGuess.c_str(); 

それともstd::stringパラメータを受け取り機能std::stodを使用することができます。

[Live on ideone]

+0

おかげで、私はコードで間違っていたものを見つけました。 – Oluwafunmito

+0

あなたは大歓迎です。 –

関連する問題