15

使いたいstd::stoi。私はそれを使う::atoi(str.c_str())ことができましたが、これがうまくいけばコードはよりきれいになります。しかし、Eclipseは私に次のように語っています。

関数'stoi'を解決できませんでした

確認しました

  • ヘッダー<string>が含まれています、
  • 使用できるように、インクルードパスは正しく設定されていますstd::string
  • コンパイラフラグ-std=c++0x -std=c++11も設定されます。

gccに欠落しているのですstoi()か、それともどういうわけか私のせいですか?

私はgcc(Debian 4.7.2-4)4.7.2を使用しています。

4

2 に答える 2

17

GCC 4.7.2を使用しているため、std::stoiサポートされています。Eclipseの警告は無視してかまいません。コンパイルして正常に実行されるはずです。問題は、GCCではなくEclipseエディターにあります。

-std=c++11(または[GCC拡張機能も取得するために]フラグが必要なだけですが-std=gnu++11、ところで-std=c++0x、これは非推奨の同義語です。)

于 2012-11-19T12:29:13.400 に答える
5

Eclipseの赤い波線を取り除くことができます(ここから):

プロジェクトのプロパティ->C/ C++一般->プリプロセッサインクルードパス、マクロ-> [プロバイダー]タブ->組み込みコンパイラ設定プロバイダー(ツールチェーンに依存)。[設定]プロパティページに移動する[ワークスペース設定]リンクをクリックし、[検出]タブを選択してプロバイダーを再度選択します。「コンパイラ仕様を取得するコマンド」があり、そこに「-std = c++11」を追加します。

[適用]をクリックしてすべてを閉じてから、[インデックス]-> [再構築]をクリックすると、すべて設定されます。

または、Eclipseのバージョンが古い場合は、次のようにする必要があります。

プロジェクト->プロパティ->C/C++ビルド->検出オプション->GCCC++コンパイラ

そして、そこの呼び出し引数に「-std = c++11」フラグを追加します。ただし、これは「非推奨」であるため、コンパイラーも更新しているため、Eclipseの更新を検討することをお勧めします。

于 2012-11-19T12:46:03.763 に答える