1. ホーム
  2. c++

[解決済み] g++ 'stod' がこのスコープで宣言されていない [重複] 。

2022-02-17 06:09:20

質問

cygwinでg++(バージョン4.8.1)を使って以下のコードをコンパイルしようとしているのですが、関数stod()を使うことができないようです。

//test.cpp
#include<iostream>
#include<vector>
#include<string>
using namespace std;

int main(){
    string a="1.23";
    cout<<stod(a);
    return 0;
}

このエラーは何度も出てしまうんです。

test.cpp:9:14: error: 'stod' was not declared in this scope
  cout<<stod(a);

同じ問題を抱えた別のスレッドを読みました。そこでは、人々はそれに対処するためにc++11を使用することを提案しました。そこで、以下のコマンドを両方試してコンパイルしてみましたが、やはり同じエラーが出ました。

g++ -std=c++0x test.cpp -o test
g++ -std=c++11 test.cpp -o test

どなたかこの問題の解決策をご存じないでしょうか?

また、c++11が有効であることはどのように確認すればよいのでしょうか?使用するためにコードを修正する必要があるのでしょうか?

ありがとうございました。

解決方法は?

ColiruのGCC 4.8で動きました( http://coliru.stacked-crooked.com/a/8a68ad0ca64c1bff )、私のマシンではClangでも同様です。 あなたのCygwinシステムがこの機能をサポートしていない可能性もあります。 私はあなたが単に古き良き時代の strtod() の代わりに それはおそらく stod() は、いずれにせよ、ボンネットの下で使用されます。